这个题是一个裸的完全背包问题,但是数组需要开大,
代码
#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];
}
 
        