PAT B1020 月饼
题目是典型贪心,注意题目描述正数,可能是double,不要想当然或者只看样例
另外注意 double的读取是%lf,输出是%f,如果两位小数%.2f
%lld是对longlong的(longlong的输入输出是%lld或者%l64d,输入输出同)

#include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> using namespace std; struct yuebing { double kucun; double shoujia; double danjia; }yb[1005]; bool cmp(yuebing a,yuebing b) { return a.danjia>b.danjia; } int main() { int num=0,sum=0; double money=0; scanf("%d %d",&num,&sum); for(int i=0;i<=num-1;i++) scanf("%lf",&yb[i].kucun); for(int i=0;i<=num-1;i++) { scanf("%lf",&yb[i].shoujia); yb[i].danjia=yb[i].shoujia*1.0/yb[i].kucun; } sort(yb,yb+num,cmp); int temp=0; while(sum>0 && temp<num) { //cout<<yb[temp].kucun<<" "<<sum<<" "<<money<<endl; if(yb[temp].kucun<=sum) { sum=sum-yb[temp].kucun; money+=yb[temp].shoujia; temp++; } else { money+=sum*yb[temp].danjia; sum=0; temp++; } } printf("%.2f",money); return 0; }