HDU-2570迷瘴(貪心)
阿新 • • 發佈:2020-07-09
地址: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 namespacestd; 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); } }