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