http://www.luogu.org/problem/show?pid=1855
题目描述一大堆,其实就是一个二维背包问题。
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define ms(i,j) memset(i,j, sizeof i);
using namespace std;
int n,m,t;
int mi[105], ti[105];
int f[202][202];
int main()
{
scanf("%d%d%d", &n, &m ,&t);
for (int i=1;i<=n;i++)
{
scanf("%d%d", &mi[i], &ti[i]);
}
ms(f,0);
for (int i=1;i<=n;i++)
for (int j=m;j>=mi[i];j--)
for (int k=t;k>=ti[i];k--)
{
f[j][k] = max(f[j][k], f[j-mi[i]][k-ti[i]]+1);
}
printf("%d\n", f[m][t]);
return 0;
}