9 POJ 1862 Stripies 簡單貪心
來源:程序員人生 發布時間:2015-06-24 08:26:55 閱讀次數:3464次
視察發現m1+m2變成2*sqrt(m1*m2)質量是能夠減少的,
因此按質量從大到小排序,每次取最大質量的兩個合并,減少的質量是最多的。
合并n⑴次,終究得到的1個數就是結果。
這里用優先隊列寫的比較方便。
#include<cstdio>
#include<queue>
#include<cmath>
using namespace std;
priority_queue<double> q;
int main()
{
int n,i;
double x,a,b;
while(~scanf("%d",&n))
{
while(!q.empty()) q.pop();
for(i=0;i<n;i++)
{
scanf("%lf",&x);
q.push(x);
}
for(i=0;i<n⑴;i++)
{
a=q.top();q.pop();
b=q.top();q.pop();
q.push(2*sqrt(a*b));
}
printf("%.3lf
",q.top());
}
return 0;
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈