http://www.luogu.org/problem/show?pid=1616
和采药很像,这里只不过改成了完全背包
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ms(i,j) memset(i,j, sizeof i);
using namespace std;
int t,m;
int ti[10005], pi[10005];
int f[100005];
int main()
{
scanf("%d%d", &t, &m);
for (int i=1;i<=m;i++)
{
scanf("%d%d", &ti[i], &pi[i]);
}
ms(f,0);
for (int i=1;i<=m;i++)
for (int j=ti[i];j<=t;j++)
{
f[j] = max(f[j], f[j-ti[i]]+pi[i]);
}
printf("%d\n", f[t]);
return 0;
}