#include <iostream>
#include <vector>
#include <iomanip>
#include <algorithm>
using namespace std;
struct node{
float amount;
float price;
};
bool comp(node a, node b) { return a.price / a.amount > b.price / b.amount; }
int main()
{
int N, demand;
cin>>N>>demand;
vector<node> mooncakes(N);
float price = 0;
for(int i = 0; i < N; i++)
scanf("%f", &(mooncakes[i].amount));
for(int i = 0; i < N; i++)
scanf("%f", &(mooncakes[i].price));
sort(mooncakes.begin(), mooncakes.end(), comp);
for(auto itr = mooncakes.begin(); itr != mooncakes.end(); itr ++)
{
if (itr -> amount > demand){
price += itr -> price * demand / itr -> amount;
cout<<setiosflags(ios::fixed)<<setprecision(2)<<price<<endl;
return 0;
}
price += itr -> price;
demand -= itr ->amount;
}
cout<<setiosflags(ios::fixed)<<setprecision(2)<<price<<endl;
}
用LUA(和C++)刷PAT (Advanced Level) ——1070 Mooncake
这段代码实现了一个购买策略,根据输入的月饼数量和需求量,按价格/单位量的比例进行排序,以最小成本满足需求。程序首先读取月饼的数量和需求量,然后对月饼结构体数组按照价格和量的比例进行排序,最后依次购买直至满足需求或用完所有月饼,输出总成本。
摘要由CSDN通过智能技术生成