【PAT乙级】1020 月饼 (25 分)
生活随笔
收集整理的這篇文章主要介紹了
【PAT乙级】1020 月饼 (25 分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
https://pintia.cn/problem-sets/994805260223102976/problems/994805301562163200
注意的一點是: N 和 D 題目說的是正整數,但是月餅的庫存和總銷量是正數沒說是整數,故用double
#include<cstdio> #include<algorithm> using namespace std; struct moon {double weight;double money;double a; }m[1035]; bool cmp(moon a,moon b) {return a.a<b.a; } int main(void) {int N;double D;double sum=0;scanf("%d %lf",&N,&D);int i,j;for(i=0;i<N;i++){scanf("%lf",&m[i].weight);}for(i=0;i<N;i++){scanf("%lf",&m[i].money);m[i].a=m[i].money/m[i].weight;}sort(m,m+N,cmp);for(i=N-1;i>=0;i--){if(m[i].weight>D){printf("%.2f\n",m[i].a*D+sum);return 0;}else{D=D-m[i].weight;sum=sum+m[i].money;}}if(D!=0){printf("%.2lf",sum);}return 0; }精簡寫法:
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; struct student {double n,sum,price; }stu[1005]; bool cmp(student a,student b) {return a.price>b.price; } int main(void) {int n,m; cin>>n>>m;for(int i=0;i<n;i++) cin>>stu[i].n;for(int i=0;i<n;i++) cin>>stu[i].sum,stu[i].price=stu[i].sum/stu[i].n;sort(stu,stu+n,cmp);double ans=0;for(int i=0;i<n;i++){if(m>stu[i].n) ans+=stu[i].sum,m-=stu[i].n;else {ans+=m*stu[i].price;break;}}printf("%.2lf",ans);return 0; }總結
以上是生活随笔為你收集整理的【PAT乙级】1020 月饼 (25 分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【PAT乙级】1019 数字黑洞 (20
- 下一篇: 第三章 搜索与图论 【完结】