PAT (Basic Level) Practice1020 -月餅 (25分)
阿新 • • 發佈:2021-01-20
題目連結:https://pintia.cn/problem-sets/994805260223102976/problems/994805301562163200
題意:給定n組月餅的庫存量和總價,以及要採購的月餅數量,求採購需要的最少money
思路:簡單貪心,按照單價降序排序後切割選取
坑點:題目中僅說明 庫存量和總售價 是正數 並未說明是正整數 ,當作正整數會有個測試點過不去
反思:對於計算或者涉及到小數的題目最好都定義為double來使用
#include<cstdio> #include<algorithm> using namespace std; struct node{ double num,p; }a[1005]; bool cmp(struct node s,struct node t){ return s.p*t.num>s.num*t.p; } int main (){ int n; double m; scanf("%d%lf",&n,&m); for(int i=0;i<n;i++){ scanf("%lf",&a[i].num); } for(int i=0;i<n;i++){ scanf("%lf",&a[i].p); } sort(a,a+n,cmp); double ans=0; for(int i=0;i<n;i++){ if(a[i].num<m){ m-=a[i].num; ans+=a[i].p; } else{ ans+=1.0*m*a[i].p/a[i].num; break; } } printf("%.2f",ans); return 0; }