很简单的一个01背包问题
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<stack>
#include<algorithm>
#include<vector>
#include<map>
#include<vector>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int value[10000],weight[10000];
for(int i=1;i<=m;i++){
cin>>weight[i]>>value[i];
}
int f[10000]={0};
for(int i=1;i<=m;i++){
for(int j=n;j>=weight[i];j--)
f[j]=max(f[j],f[j-weight[i]]+value[i]);
}
cout<<f[n];
return 0;
}