POJ-1862-Stripies
2014-02-21 15:44
225 查看
这个题是说给你n个数,然后你每次可以合并其中的2个得到一个新的数,合并的方式为c=2*(a*b)^(1/2) 然后要求你将他们合并成一个后最后剩下的最少是多少。
不难想到每次从其中选择最大的2个进行合并操作,然后得到的新的放入里面,然后每次再取最小的2个。不过这个题交的时候只能C++能过,G++过不了,不知道为什么
代码:
不难想到每次从其中选择最大的2个进行合并操作,然后得到的新的放入里面,然后每次再取最小的2个。不过这个题交的时候只能C++能过,G++过不了,不知道为什么
代码:
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> #include<cmath> using namespace std; const int maxn=110; struct Node { double val; bool operator < (const Node &a)const { return val<a.val; } }; int n; priority_queue<Node> q; int main() { while(scanf("%d",&n)!=EOF) { Node node; for(int i=0;i<n;i++) { double val; scanf("%lf",&val); node.val=val; q.push(node); } for(int i=1;i<n;i++) { double a=q.top().val; q.pop(); double b=q.top().val; q.pop(); node.val=2*sqrt(a*b); q.push(node); } printf("%.3f\n",q.top().val); q.pop(); } return 0; }
相关文章推荐
- POJ 1862 Stripies 【贪心】
- POJ:1862-Stripies
- POJ 1862 (Stripies) 数学题
- poj1862~Stripies~贪心+优先队列
- Poj 1862 Stripies【贪心+数学】
- Stripies - POJ 1862 水题
- 【POJ】1862 - Stripies
- POJ 1862 Stripies 贪心+优先队列
- POJ 1862 Stripies
- POJ 1862 Stripies
- poj 1862 Stripies 【优先队列】
- poj - 1862-Stripies
- POJ 1862 Stripies 贪心+优先队列
- POJ 1862 Stripies
- poj 1862 Stripies
- POJ 1862 Stripies(解题报告)
- POJ 1862 Stripies 【优先队列】
- POJ 1862 Stripies(哈夫曼)
- POJ 1862 Stripies 题解
- POJ 1862-Stripies