洛谷题目P2240部分背包问题
题目来源:https://www.luogu.com.cn/problem/P2240
非常之水的一道题,以至于作为蒟蒻的我一次过。
值得记录的是这道题有点小坑,本来打算用dp的,多看了一眼题目发现“所有金币都可以随意分割,分割完的金币重量价值比(也就是单位价格)不变。”
也就是说就是算单位价格然后排序贪心...
`
double res = 0;
struct L {
double m;
double v;
double dw;
}nums[105];
bool cmp(const L& i, const L& j) {
if (i.dw > j.dw) {
return true;
}
else { return false; }
}
int main() {
int N, T;cin >> N >> T;
for (int i = 1;i <= N;i++) {
cin >> nums[i].m >> nums[i].v;
nums[i].dw = nums[i].v / nums[i].m;
}
sort(nums + 1, nums + N + 1, cmp);
for (int i = 1;i <= N;i++) {
if (T > 0) {
if (T >= nums[i].m) {
res += (double)nums[i].v;
T -= nums[i].m;
}
else {
res += (double)(T * nums[i].v / nums[i].m);
T = 0;
}
}
}
printf("%.2f", res);
return 0;
}`

浙公网安备 33010602011771号