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