题解 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.