您的位置:首页 > 其它

团体程序设计天梯赛-练习集 L2-003. 月饼LOVE

2016-07-04 19:56 309 查看
团体程序设计天梯赛-练习集

L2-003. 月饼

https://www.patest.cn/contests/gplt/L2-003

先进行按单价排序,再贪心法加起来。

要点:要用double与double相除,求得单价。不太清楚为什么。

#include<iostream>
#include<cstdio>
using namespace std;
const int MAX = 1010;
struct Moon {
double t;
double money;
double moneymax;
}moon[MAX];
int cmp(const void *a, const void *b) {
return (*(Moon*)a).money > (*(Moon*)b).money ? -1 : 1;
}
int main() {
int n;
double tmax;
scanf("%d%lf", &n, &tmax);
double ans=0;
for (int i = 0; i < n; i++) {
scanf("%lf", &moon[i].t);
}
for (int i = 0; i < n; i++) {
scanf("%lf", &moon[i].moneymax);
moon[i].money = moon[i].moneymax / moon[i].t;
}
qsort(moon, n, sizeof(moon[0]), cmp);
for (int i = 0; i < n&&tmax>0; i++) {
if (moon[i].t < tmax) {
ans += moon[i].moneymax;
tmax -= moon[i].t;
}
else {
ans += moon[i].money*tmax;
tmax = 0;
}
}
printf("%.2lf\n", ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  贪心 结构体排序