P1509 找啊找啊找GF
#include<iostream>
#include<cstring>
using namespace std;
const int N=100;
int n,m,r;
int rmb[N+5],rp[N+5],time[N+5];
int dp1[N+5][N+5],dp2[N+5][N+5];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d%d",&rmb[i],&rp[i],&time[i]);
scanf("%d%d",&m,&r);
memset(dp2,127,sizeof dp2);
dp2[0][0]=0;
for(int i=1;i<=n;i++)
{
for(int j=m;j>=rmb[i];j--)
{
for(int k=r;k>=rp[i];k--)
{
if(dp1[j-rmb[i]][k-rp[i]]+1>dp1[j][k])
{
dp1[j][k]=dp1[j-rmb[i]][k-rp[i]]+1;
dp2[j][k]=dp2[j-rmb[i]][k-rp[i]]+time[i];
}
else if(dp1[j-rmb[i]][k-rp[i]]+1==dp1[j][k])
{
dp2[j][k]=min(dp2[j][k],dp2[j-rmb[i]][k-rp[i]]+time[i]);
}
}
}
}
printf("%d\n",dp2[m][r]);
return 0;
}