二维费用背包板子题
题目链接
ACcode
#include<bits/stdc++.h>
using namespace std;
const int M = 2e4 + 9;
int dp[M][M], c[M], w[M], m[M];
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int h, t;cin >> h >> t;
int n;cin >> n;
for (int i = 1;i <= n;i++)cin >> c[i] >> m[i] >> w[i];
for (int i = 1;i <= n;i++)
for (int j = h;j >= c[i];j--)
for (int op = t;op >= m[i];op--)
dp[j][op] = max(dp[j][op], dp[j - c[i]][op - m[i]] + w[i]);
cout << dp[h][t];
return 0;
}