#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
typedef long long ll;
int n, m, r;
int rmb[N], rp[N], ti[N];
int dp[N][N]; // 泡i miemie时 花了j rmb,k rp 的最多miemie数;
int f[N][N]; // 泡i miemie时 花了j rmb,k rp 的最短时间;
int main(void)
{
cin >> n;
for(int i = 1; i <= n; i++)
cin >> rmb[i] >> rp[i] >> ti[i];
// memset(f, 0x3f, sizeof(f)); 加上就错
f[m][r] = 0;
cin >> m >> r;
for(int i = 1; i <= n; i++)
for(int j = m; j >= rmb[i]; j--)
for(int k = r; k >= rp[i]; k--)
{
if(dp[j][k] < dp[j - rmb[i]][k - rp[i]] + 1)
{
dp[j][k] = dp[j - rmb[i]][k - rp[i]] + 1;
f[j][k] = f[j - rmb[i]][k - rp[i]] + ti[i];
}
else if(dp[j][k] == dp[j - rmb[i]][k - rp[i]] + 1)
f[j][k] = min(f[j][k], f[j - rmb[i]][k - rp[i]] + ti[i]);
else
{
dp[j][k] = dp[j][k];
f[j][k] = f[j][k];
}
}
cout << f[m][r] ;
return 0;
}
因为f有取min,赋个无穷大让它不能从奇怪的地方转移过来
But it wronged.