可爱迷人的香穗子
Time Limit:10000MS Memory Limit:65536K
Total Submit:14 Accepted:11
Description
香穗子正准备参加一个晚会!现在她准备好好打扮一下,她准备戴上耳环,手镯,项链..等等一些装饰品,这里要说明的是,香穗子不是花瓶….
香穗子最多能承受W的重量,每个装饰品也有各自的重量和美观值
现在香穗子要怎么打扮,美观值的和最大
Input
第一行两个数,w,n
接下来n行,每行两个数,表示物品的信息,第一个数是物品的重量,第二个数是物品的美观值
Output
表示香穗子最多能得到的最大美观值和
Sample Input
10 2
7 8
8 7
Sample Output
8
Hint
数据范围:
n <= 100,w <= 10000
答案保正小于Maxlongint
Source
NOIdaokan
算法:DP
Time Limit:10000MS Memory Limit:65536K
Total Submit:14 Accepted:11
Description
香穗子正准备参加一个晚会!现在她准备好好打扮一下,她准备戴上耳环,手镯,项链..等等一些装饰品,这里要说明的是,香穗子不是花瓶….
香穗子最多能承受W的重量,每个装饰品也有各自的重量和美观值
现在香穗子要怎么打扮,美观值的和最大
Input
第一行两个数,w,n
接下来n行,每行两个数,表示物品的信息,第一个数是物品的重量,第二个数是物品的美观值
Output
表示香穗子最多能得到的最大美观值和
Sample Input
10 2
7 8
8 7
Sample Output
8
Hint
数据范围:
n <= 100,w <= 10000
答案保正小于Maxlongint
Source
NOIdaokan
算法:DP
裸的01背包,还要我解释么……
program p2;
const
maxn=100;
maxm=10000;
var
n,m:longint;
f:array [0..maxm] of longint;
v,w:array [0..maxn] of longint;
procedure init;
var
i:longint;
begin
readln(m,n);
for i:=1 to n do readln(w[i],v[i]);
end;
function max(x,y:longint):longint;
begin
if x>y then exit(x) else exit(y);
end;
procedure main;
var
i,j:longint;
begin
for i:=1 to n do
begin
for j:=m downto w[i] do
f[j]:=max(f[j],f[j-w[i]]+v[i]);
end;
end;
begin
assign(input,'2.in'); reset(input);
assign(output,'2.out'); rewrite(output);
init;
main;
writeln(f[m]);
close(input); close(output);
end.