POJ 1862 Stripies#贪心(水)

(~ ̄▽ ̄)~*

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;

int main()
{
    int n;
    double w[105];
    while(~scanf("%d",&n))
    {
        for(int i=0;i<n;i++)
        {
            int m;
            scanf("%d",&m);
            w[i]=m*1.0;
        }

        sort(w,w+n);
        for(int i=n-1;i>0;i--)
        {
            w[i-1]=2*sqrt(w[i]*w[i-1]);
        }
        printf("%.3lf\n",w[0]);
    }
    return 0;
}
时间: 2024-08-03 06:54:44

POJ 1862 Stripies#贪心(水)的相关文章

POJ 1862 Stripies 贪心+优先队列

http://poj.org/problem?id=1862 题目大意: 有一种生物能两两合并,合并之前的重量分别为m1和m2,合并之后变为2*sqrt(m1*m2),现在给定n个这样的生物,求合并成一个的最小重量 思路: m1+m2 >=  2*sqrt(m1*m2) 所以每次取大的去合并,能变小. 直接优先队列就可以啦. #include<cstdio> #include<cmath> #include<queue> using namespace std;

POJ 1862 Stripies 题解 《挑战程序设计竞赛》

题目:POJ - 1862 思路:每次挑选最大的两个数,进行2*sqrt(a,b)运算后放入到队列中.有点类似于之前做的fence repair题目. 这样可以保证大数被开方的次数更多,最后的结果更小. 注意: n为1的情况,WA了几次. 学会C++输出格式控制: http://c.biancheng.net/cpp/biancheng/view/2227.html. 1 #include <iostream> 2 #include <stdio.h> 3 #include <

POJ 1862 Stripies【哈夫曼/贪心/优先队列】

Stripies Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 18198   Accepted: 8175 Description Our chemical biologists have invented a new very useful form of life called stripies (in fact, they were first called in Russian - polosatiki, bu

9 POJ 1862 Stripies 简单贪心

观察发现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

POJ 1862 - Stripies

一道贪心的水题,读完题目,直接把样例的三个数试一试,就知道怎么一种组合方式会产生最小的结果. (让我想起了哈弗曼编码,用了优先队列) 1 #include<cstdio> 2 #include<queue> 3 #include<cmath> 4 using namespace std; 5 int n; 6 int main() 7 { 8 while(scanf("%d",&n)!=EOF) 9 { 10 priority_queue&l

POJ 1862 Stripies 【优先队列】

题意:科学家发现一种奇怪的东西,他们有重量weight,如果他们碰在一起,总重变成2*sqrt(m1*m2).要求出最终的重量的最小值. 思路:每次选取质量m最大的两个stripy进行碰撞结合,能够得到最小的质量.所有只要维护一个优先队列就可以了 #include <iostream> #include <cstdio> #include <queue> #include <math.h> #include <cstring> #include

poj Yogurt factory (贪心水题)

# include <stdio.h> # include <string.h> # include <algorithm> using namespace std; int main() { int i,n,s; __int64 sum ; int cost[10010],num[10010]; while(~scanf("%d%d",&n,&s)) { for(i=0;i<n;i++) scanf("%d%d&qu

poj 2369 Permutations 置换水题

找循环节求lcm就够了,若答案是12345应该输出1,被坑了下. #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cmath> using namespace std; #define INF 0x3FFFFFF #define MAXN 2222 #define eps 1e-6 i

POJ Octal Fractions(JAVA水过)

题目链接:CLICK HERE~ 虽然java一下模拟水过,但是我看到别人的一段神奇代码,贴出和大家共享. import java.math.*; import java.util.*; class Main{ public static void main(String args[]){ Scanner cin = new Scanner(System.in); BigDecimal Eight = new BigDecimal(8); while(cin.hasNext()){ String