题解
#include
using namespace std;
const int maxm=10001,maxn=10001;
int m,n,w[maxn],c[maxn],f[maxm];
int main()
{
scanf("%d%d",&m,&n);
for (int i=1;i<=n;i++)
scanf("%d%d",&c[i],&w[i]);
for (int i=1;i<=n;i++)
for (int v=w[i];v<=m;v++)//f[v]表示不超过时间值v的最大价值
if (f[v-w[i]]+c[i]>f[v]) f[v]=f[v-w[i]]+c[i];
printf("%d",f[m]);//f[m]为最优解
}