01背包
#include<iostream> #include<cstdio> #include<fstream> #include<string.h> using namespace std; #define M 33333 #define N 33 int d[M],a[N],b[N];//放在主函数里面,溢出了。。 int max(int x,int y) { return x>y?x:y; } int main() { int t,m,n,i,j; // fstream cin("d:\\test.txt"); cin>>t; while(t--) { cin>>m>>n; for(i=0;i<n;i++) cin>>a[i]>>b[i]; memset(d,0,sizeof(d)); for(i=0;i<n;i++) for(j=m;j>=a[i];j--) d[j]=max(d[j],d[j-a[i]]+a[i]*b[i]); cout<<d[m]<<endl; } return 0; }