悬赏观猪关注
代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
typedef long long l;
l n, m, r, dp[105][105], times[105][105], rmb[105], rp[105], t[105], maxn = 0, maxt = 0;
int main() {
scanf("%lld", &n);
for (l i = 1; i <= n; ++i) {
scanf("%lld%lld%lld", &rmb[i], &rp[i], &t[i]);
}
scanf("%lld%lld", &m, &r);
for (l i = 1; i <= n; ++i) {
for (l j = r; j >= rp[i]; --j) {
for (l k = m; k >= rmb[i]; --k) {
if (dp[j - rp[i]][k - rmb[i]] + 1 > dp[j][k] || dp[j - rp[i]][k - rmb[i]] + 1 == dp[j][k] && times[j][k] > times[j - rp[i]][k - rmb[i]] + rmb[i]) {
dp[j][k] = dp[j - rp[i]][k - rmb[i]] + 1;
times[j][k] = times[j - rp[i]][k - rmb[i]] + t[i];
}
}
}
}
for (l i = 1; i <= r; ++i) {
for (l j = 1; j <= m; ++j) {
if (dp[i][j] > maxn || dp[i][j] == maxn && times[i][j] > maxt) {
maxn = dp[i][j];
maxt = times[i][j];
}
}
}
printf("%lld", maxt);
return 0;
}