HDU-2570迷瘴(贪心)

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2570

解析:

想让最后的体积最大,肯定是先加入浓度小的。

所以贪心思路是,浓度从小到大加入。

注意:

n种同体积的浓度分别为a,b,c...那么混合以后浓度为:(a+b+c+..)/n

所以从小到大加入即可。

#include<cstdio>
#include<stack>
#include<map>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=1e5+20;
int a[121];
struct node
{
    ll l,r;
}st[maxn];
bool cmp(node a , node b)
{
    if(a.l==b.l)
        return a.r<b.r;
    return a.l<b.l;
}
int main()
{    // 4 0 20
    int t;
    cin>>t;
    while(t--)
    {
        int n,v,w;
        cin>>n>>v>>w;
        for(int i=1;i<=n;i++)
            cin>>a[i];
        sort(a+1,a+1+n);
        double c=0;
        int vv=0;
        int ok = 0 ;
        for(int i=1;i<=n;i++)
        {
            if((c+a[i])/i<=w)
                {
                    c+=a[i];
                    vv++;
                    ok=1;
                }
            else
                break;
        }
        if(!ok)
            cout<<"0 0.00"<<endl;
        else
            printf("%d %.2lf
",vv*v,c/vv/100);
    }
}
原文地址:https://www.cnblogs.com/liyexin/p/13275010.html