求助
查看原帖
求助
741732
small_Dongpo楼主2023/10/4 12:54

悬赏观猪关注

代码:

#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;
}

2023/10/4 12:54
加载中...