5 16特長生模擬題 買裝備

2021-08-01 07:43:35 字數 1047 閱讀 6963

mxy沉迷於乙個辣雞遊戲不可自拔。

為了加強角色的實力,mxy決定重新買一套裝備。已知現在有n件裝備,每件裝備會提供一定的物理抗性和魔法抗性,並需要一定的價錢。mxy想要保證至少有a的物抗和b的魔抗,請你計算出滿足條件所需的最少金額。(裝備不可重複購買)

二維費用的揹包問題

對於每件物品,具有兩種不同的費用;選擇這件物品必須同時付出著兩種代價;對於每種代價都有乙個可付出的最大值。問怎樣選擇可以得到最大值。

設f[i,j,k]表示前i件物品付出兩種代價分別為j和k時可獲得的最大值(最小值)。方程就是:f[i,j,k]=max/min(f[i-1,j,k],f[i-1,j-a[i],k-b[i]]+v[i]).

也可以只是用二維的陣列:當每件物品只可以取一次時變數j和k採用逆序的迴圈,當物品可以取無限次時採用順序的迴圈

在本題中,當j+a[i]>a時,j+a[i]當成a,b同理。

時間複雜度o(a*b*n)

var

a,b,n,i,j,k,c,d:longint;

w,m,v:array[1..1000]of longint;

f:array[0..100,0..100]of longint;

begin

readln(a,b);

readln(n);

fillchar(f,sizeof(f),$7);

for i:=1

to n do

readln(w[i],m[i],v[i]);

f[0,0]:=0;

for i:=1

to n do

for j:=a downto0do

for k:=b downto0do

begin

c:=j+w[i];d:=k+m[i];

if c>a then c:=a;

if d>b then d:=b;

if f[j,k]+v[i]then f[c,d]:=f[j,k]+v[i];

end;

writeln(f[a,b]);

end.

買裝備(特長生準備)

n個物品,物品有物抗和魔抗還有價值,要求物抗和魔抗都到達規定值,然後價值最小。n 21 物抗 21 魔抗 79 價值 800 二維費用揹包,書上的例題 搜尋,對乙個物品只有選和不選兩種狀態,時間就是o 2 21 var i,j,n,m,x,y,k,min longint a,b,w array 1....

5 18特長生模擬題 Biotech

bob 發現了一群有趣的細胞。這群細胞排列成乙個n m 的矩陣。每個細胞有兩個狀態 放電狀態和平靜 狀態。它們每秒鐘都會按以下的規則轉換狀態 首先我們定義,乙個細胞的鄰居為它周圍的8 個細胞。同時設k 為某乙個細 胞的處於放電狀態的鄰居的個數。若k 2,則這個細胞在下一秒因電量不足而變為 保持平靜狀...

特長生模擬 採藥

題目大意 凡凡要去採藥,他採的藥不僅要求揹包的總空間v能放得下所採的藥,還要求藥草的總質量不能超過凡凡所能承受的範圍m。現在給出n種珍惜的藥材,對於每個藥材凡凡都會精準地目測出其質量a i 體積b i 和價值c i 求凡凡所能採到的藥材的最大價值。注意 每種藥材只有乙個。30 資料,所有藥草質量a ...