不是最优但能过
2025-06-28 16:10:12
发布于:上海
8阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
struct Gold {
int weight;
int value;
double ratio;
};
bool compare(Gold a, Gold b) {
return a.ratio > b.ratio;
}
int main() {
int N, T;
cin >> N >> T;
Gold golds[100];
for(int i = 0; i < N; i++) {
cin >> golds[i].weight >> golds[i].value;
golds[i].ratio = (double)golds[i].value / golds[i].weight;
}
sort(golds, golds + N, compare);
double total = 0.0;
for(int i = 0; i < N && T > 0; i++) {
if(golds[i].weight <= T) {
total += golds[i].value;
T -= golds[i].weight;
} else {
total += golds[i].ratio * T;
T = 0;
}
}
cout << fixed << setprecision(2) << total << endl;
return 0;
}
全部评论 1
给个赞吧
2025-06-28 来自 上海
0
有帮助,赞一个