题解 P1910 【L国的战斗之间谍】
简单的二维背包,直接给出标程:
var
f:array[0..2000,0..2000] of longint;
i,j,k,x,y,z,m,n,v:longint;
function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end;//两者较大者
begin
readln(n,m,v);
for i:=1 to n do
begin
readln(x,y,z);
for j:=m downto y do
for k:=v downto z do//逆序,保证只被选一次
f[j,k]:=max(f[j,k],f[j-y,k-z]+x);//更新最优解
end;
writeln(f[m,v]);
end.