1020 月饼 (25 分)
题目链接:1020 月饼 (25 分)
这道题目逻辑方面比较简单,但是浙大的PAT往往考察细节,果不其然,因为变量类型的原因,一个测试点没过。
特别注意,题目中说种类数N和需求量D为正整数,其它变量则为正数,所以这里的其它变量类型应当是double型。
#include <bits/stdc++.h> using namespace std; struct Node { double num; //注意题目中库存为正数,没有说整数 double money; //注意题目中总价为正数,没有说整数 bool operator <(const Node &b)const { return money/num<b.money/b.num; } }a; vector<Node> stock; int main() { int n,d; cin>>n>>d; double interest=0.0; int num; for(int i=0;i<n;i++) { cin>>a.num; stock.push_back(a); } for(int i=0;i<n;i++) cin>>stock[i].money; sort(stock.begin(),stock.begin()+stock.size()); for(int i=stock.size()-1;i>=0&&d!=0;i--) { if(stock[i].num>=d) //该种类月饼的库存大于需求 { interest+=stock[i].money*d/stock[i].num; d=0; } else //该种类的库存小于需求 { interest+=stock[i].money; d-=stock[i].num; } } printf("%.2f\n",interest); return 0; }