题目链接:http://code.bupt.edu.cn/problem/p/417/
裸的01背包,不懂的同学可以看下本博客转载的《背包九讲》
代码:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#define N 11111
using namespace std;
int a[N];
long long b[N];
long long dp[N];
int main()
{
int c;
scanf("%d",&c);
while(c--)
{
memset(dp,0,sizeof(dp));
int t;
int n;
scanf("%d%d",&t,&n);
for(int i=0;i<n;i++)
scanf("%d%lld",&a[i],&b[i]);
for(int i=0;i<n;i++)
for(int j=t;j>=a[i];j--)
dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
printf("%lld\n",dp[t]);
}
return 0;
}