SSL2293 暗黑遊戲 dp

2021-07-30 18:30:11 字數 1510 閱讀 2914

暗黑遊戲

description

暗黑遊戲中,裝備直接決定玩家人物的能力。可以使用pg和rune購買需要的物品。暗黑市場中的裝備,每件有不同的**(pg和rune)、能力值、最大可購買件數。kid作為暗黑戰網的乙個玩家,當然希望使用盡可能少的pg和rune購買更優的裝備,以獲得最高的能力值。請你幫忙計算出現有支付能力下的最大可以獲得的能力值。 

input

第一行,三個整數n,p,r,分別代表市場中物品種類,pg的支付能力和rune的支付能力。 

第2..n+1行,每行四個整數,前兩個整數分別為購買此物品需要花費的pg,rune,第三個整數若為0,則說明此物品可以購買無數件,若為其他數字,則為此物品可購買的最多件數(s),第四個整數為該裝備的能力值。

output

僅一行,乙個整數,最大可獲得的能力值。

sample input

3 10 10 

5 3 0 110

4 3 4 120

2 3 1 130

sample output

370
分析:這題是個完全揹包和多重揹包的混合揹包,做的時候分成完全揹包和多重揹包做就行了。
**
const

maxn=1000;

var  f:array[0..maxn,0..maxn] of longint;

a,b,c,d:array[0..maxn] of longint;

i,j,k,l,n,p,r:longint;

function max(x,y:longint):longint;

begin

if x>y then exit(x) else exit(y);

end;

begin

readln(n,p,r);

for i:=1 to n do

readln(a[i],b[i],c[i],d[i]);

for i:=1 to n do

if c[i]=0 then

begin

for j:=a[i] to p do

for k:=b[i] to r do

f[j,k]:=max(f[j,k],f[j-a[i],k-b[i]]+d[i]);

endelse begin

for l:=1 to c[i] do

for j:=p downto a[i] do

for k:=r downto b[i] do

f[j,k]:=max(f[j,k],f[j-a[i],k-b[i]]+d[i]);

end;

writeln(f[p,r]);

end.

ssl2293 暗黑遊戲

暗黑遊戲 time limit 10000ms memory limit 65536k total submit 87 accepted 50 case time limit 1000ms description 暗黑遊戲中,裝備直接決定玩家人物的能力。可以使用pg和rune購買需要的物品。暗黑市場...

SSL 2293暗黑遊戲

time limit 1000ms memory limit 65536k 暗黑遊戲中,裝備直接決定玩家人物的能力。可以使用pg和rune購買需要的物品。暗黑市場中的裝備,每件有不同的 pg和rune 能力值 最大可購買件數。kid作為暗黑戰網的乙個玩家,當然希望使用盡可能少的pg和rune購買更優...

SSL 2293 暗黑遊戲(動規練習題)

暗黑遊戲中,裝備直接決定玩家人物的能力。可以使用pg和rune購買需要的物品。暗黑市場中的裝備,每件有不同的 pg和rune 能力值 最大可購買件數。kid作為暗黑戰網的乙個玩家,當然希望使用盡可能少的pg和rune購買更優的裝備,以獲得最高的能力值。請你幫忙計算出現有支付能力下的最大可以獲得的能力...