1 1000 5 800 2 400 5 300 5 400 3 200 2
390001.#include <iostream>
02.#include<algorithm>03.#include<cstdio>04.#include<cstring>05.using namespace std;06.int d[30005];07.int max(int a,int b)08.{09.return a>b?a:b;10.}11.int main(int argc, char* argv[])12.{13.int t;14.scanf("%d",&t);15.while(t--)16.{17.int n,m,i,j,v,w;18.memset(d,0,sizeof(d));19.scanf("%d%d",&n,&m);20.for(i=0;i<m;i++)21.{22.scanf("%d%d",&v,&w);23.for(j=n;j>=v;j--)24.{25.d[j]=max(d[j-v]+v*w,d[j]);26.}27.}28.printf("%d\n",d[n]);29.}30.return 0;31.}原文:http://www.cnblogs.com/52Cyan/p/3681978.html