1802(洛谷)

#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
int dp[1100];
int win[1100], lose[1100], use[1100];
int main()
{
int n, m;
cin>>n>>m;
for (int i = 1; i <= n; i++)
//scanf("%d%d%d", lose + i, win + i, use + i);
cin >> lose[i] >> win[i] >> use[i];
for (int i = 1; i <= n; i++)
{
for (int j = m; j >= use[i]; j--)//还可以干一下,这两个部分是可以衔接的
//因为只有两种情况打得赢,打不赢
dp[j] = max(dp[j] + lose[i], dp[j - use[i]] + win[i]);
for (int j = use[i] - 1; j >= 0; j--)//直接干不赢的
dp[j] += lose[i];
}
printf("%lld", 5ll * dp[m]);//数据处理,经验问题。注意这个数据输出的问题
}

原文地址:https://www.cnblogs.com/WAsbry/p/12683664.html