您的位置:首页 > 其它

POJ 1862 Stripies

2016-03-24 09:00 204 查看
每次合并最大的两个,优先级队列维护一下。

输出的时候%.3lf G++会WA,C++能AC,改成%.3f,都能AC。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std;

int n,s;
priority_queue<double>Q;

int main()
{
while(~scanf("%d",&n))
{
while(!Q.empty())Q.pop();
for(int i=1; i<=n; i++)
{
double x;
scanf("%lf",&x);
Q.push(x);
}

s=n;
if(s==1)printf("%.3f\n",Q.top());
else
{
while(1)
{
double num1=Q.top();
Q.pop();
s--;
double num2=Q.top();
Q.pop();
s--;
Q.push(2*sqrt(num1*num2));
s++;
if(s==1)
{
printf("%.3f\n",Q.top());
break;
}
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: