B1020 月饼 (25分)
#include<cstdio> #include<algorithm> using namespace std; struct moodcake{ double store; double sell; double price; }cake[1010]; bool cmp(moodcake a,moodcake b)//注意这类填写的是什么,不是cake[].price, cake[].price { return a.price>b.price; } int main() { int num; double need; scanf("%d%lf",&num,&need); for(int i=0;i<num;i++) { scanf("%lf",&cake[i].store); } for(int i=0;i<num;i++){ scanf("%lf",&cake[i].sell); } //计算单价并排序 for(int i=0;i<num;i++) { cake[i].price=cake[i].sell/cake[i].store; } sort(cake,cake+num,cmp);//初始都是从小到大 //收益 double ans=0; for(int i=0;i<num;i++) { if(cake[i].store<=need) { need=need-cake[i].store; ans=ans+cake[i].sell; } else { ans=ans+need*cake[i].price; // need=0; break; } } printf("%.2f\n",ans); return 0; }
唯有学习才能求生