nyoj-49

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;
}

  

你可能感兴趣的:(nyoj-49)