1. 程式人生 > 實用技巧 >HDU-2570迷瘴(貪心)

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\n",vv*v,c/vv/100); } }