这个题是一个裸的完全背包问题,但是数组需要开大,
代码
#include<iostream>
using namespace std;
int n,m,v,i;
int c[100010],w[100010],f[100010];
int main()
{
cin>>m>>n;
for( i=1;i<=n;i++)
cin>>c[i]>>w[i];
for( i=1;i<=n;i++)
for( v=w[i];v<=m;v++)
if(f[v-w[i]]+c[i]>f[v])
f[v]=f[v-w[i]]+c[i];
cout<<f[m];
}