标签:struct ret i++ long code sans while get ble
地址: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); } }
标签:struct ret i++ long code sans while get ble
原文地址:https://www.cnblogs.com/liyexin/p/13275010.html