国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > php教程 > 9 POJ 1862 Stripies 简单贪心

9 POJ 1862 Stripies 简单贪心

来源:程序员人生   发布时间:2015-06-24 08:26:55 阅读次数:3308次

视察发现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; }


生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生