动态规划——5倍经验日
P1802 5 倍经验日
解题思路
01背包的另一种形式,这里只是多了备选项l[i],只要加上去即可!
代码实现
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
#define rep(i,s,n) for(long long i=s;i<n;i++)
#define reb(i,d,n) for(long long i=n;i>=d;i--)
using namespace std;
const int SIZE = 1001;
int n, x;
long long l[SIZE], w[SIZE], t[SIZE];
long long dp[SIZE];
signed main()
{
ios::sync_with_stdio(false);
cin >> n >> x;
rep(i, 0, n)
{
cin >> l[i] >> w[i] >> t[i];
}
rep(i, 0, n)
{
reb(j,0 , x + 1)
{
if (j >= t[i])
dp[j] = max(dp[j]+l[i],dp[j - t[i]] + w[i]);
else
dp[j] = dp[j] + l[i];
}
}
dp[x] = dp[x] * 5;
cout <<dp[x];
return 0;
}