HDU 1009 FatMouse' Trade

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1009


思路:贪心


先买性价比最高的物品,知道钱花光。


#include<iostream> #include<cstdio> #include<algorithm> using namespace std; struct node { double w,v,p; }a[1005]; bool cmp(node b,node c) { return b.p>c.p; } int main() { int n,m,i; double sum; while(scanf("%d%d",&n,&m)&&(n!=-1&&m!=-1)) { for(i=0;i<m;i++) { scanf("%lf%lf",&a[i].w,&a[i].v); a[i].p=a[i].w/a[i].v; } sort(a,a+m,cmp); sum=0; for(i=0;i<m;i++) { if(n>=a[i].v) { sum+=a[i].w; n-=a[i].v; } else if(n>0) { sum+=a[i].p*n; n=0; } if(n==0) break; } printf("%.3lf\n",sum); } return 0; }

你可能感兴趣的:(c)