题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=248
分析:英文题目,看懂了,画几下,就发现其实就是一个贪心背包的变形,水题一个~话不多少,代码走起~
/* 部分背包的变体,水题 只需要算出每个商店的单位总费用 = 原单位费用+距离的费用 */ #include <iostream> using namespace std; #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> struct Node { int w,v; }; Node stores[101]; int cmp(const void *a,const void *b) { Node *x = (Node*)a; Node *y = (Node*)b; return x->v - y->v; } int main() { int T; cin >> T; while (T--) { int k,e,n; cin >> k >> e >> n; for (int i = 0; i < n; ++i) { int x,f,c; cin >> x >> f >> c; stores[i].w = f; stores[i].v = c + e - x; } qsort(stores,n,sizeof(Node),cmp); int ans = 0; for (int i = 0; i < n && k > 0; ++i) { if (stores[i].w <= k) { ans += stores[i].w*stores[i].v; k -= stores[i].w; } else { ans += k*stores[i].v; break; } } cout << ans << endl; } return 0; }
时间: 2024-11-08 03:11:24