题解:本题主要考查01背包的变形问题,主要是这是有两个01背包一个装money,一个装time。用多一维就可以按模板打了。
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int money[2222],tim[2222],dp[2222][2222];
int n,m,t,i,j,k;
int main()
{
cin>>n>>m>>t;
for(i=1;i<=n;i++)cin>>money[i]>>tim[i];
for(i=1;i<=n;i++)
for(j=m;j>=money[i];j--)
for(k=t;k>=tim[i];k--)
dp[j][k]=max(dp[j][k],dp[j-money[i]][k-tim[i]]+1);
cout<<dp[m][t];
return 0;
}