金明的預算方案 pascal思路

2021-12-21 01:25:25 字數 2021 閱讀 3155

1樓:

金明的預算方案

如果看過普及組試卷就會發現,對應的第二個題目,也是一個樣的背景,提高組只是多了個「主件附件」的的關係,如果去掉這一點,就全沒區別了。也就成了經典的揹包問題了。也就是多了這麼一點,考試的時候就暈了。

不知道怎麼做了。後來才發現是個很簡單的dp題目。可惜我當時沒做出來。

草率的審題,可能會得到這樣的演算法:dp,對每一個物品做兩種決策,取與不取。如果取,滿足兩個條件:

1.要麼它是主件,要麼它所屬的主件已經在包裡了。2.

放進去後的重要度與**的成績的總和要比沒放進時的大。這兩個條件缺一不可的。於是呼,得到如下的動規方程:

f[i,j]:=f[i-1,j];

if (i為主件or i的附件在包中)and (f[i,j]0

then begin

with w[g[qx]] do

begin

u:=u+1;

v:=vx; p:=px;

end;

end;

for i:=1 to k do

with w do

begin

for j:=0 to 2 do write('(',v[j],',',p[j],') ');

writeln;

end;

end;

procedure doit;

vari,j:integer;

begin

fillchar(f,sizeof(f),0);

for i:=1 to k do

with w do

begin

for j:=1 to n do

begin

f[i,j]:=f[i-1,j];

if (j>=v[0]) and (f[i,j]=v[0]+v[1]) and (f[i,j]=v[0]+v[2]) and (f[i,j]=v[0]+v[1]+v[2]) and (f[i,j]

then f[i,j]:=f[i-1,j-v[0]-v[1]-v[2]]+v[0]*p[0]+v[1]*p[1]+v[2]*p[2];

end;

end;

end;

procedure print;

begin

writeln(f[k,n]);

end;

begin

init;

doit;

print;

end.

2樓:

我說提高組的吧:「由於最多隻有兩個附件,所以把每一個主件拆為主件、主件+附件1、主件+附件2、主件+附件1+附件2 這三個物品進行揹包,就可以了。 」這句話應該是錯的。

因為照上述演算法,我揹包時選了主件a,有可能下次又選了主件a+附件1。這樣主件a就被選了兩遍。不符合題意。

應該把一個主件和其附件按上述方法分成一個組k,k包含4個元素:主件、主件+附件1、主件+附件2、主件+附件1+附件2。

下面進行dp

for 所有的組k

for 所有的i屬於組k

for v=0到最大的揹包限制

f[v]=max

更多的揹包類動歸。你可以看dd牛的揹包九講。

這裡有一個

這個題比較難,此類問題屬於第七講。

3樓:喜揚揚

noip2006普及組的還是提高的?

普及的很簡單的揹包

提高的麼

由於最多隻有兩個附件,所以把每一個主件拆為主件、主件+附件1、主件+附件2、主件+附件1+附件2 這三個物品進行揹包,就可以了。

4樓:匿名使用者

揹包問題

由於最多隻有兩個附件,所以把每一個主件拆為主件、主件+附件1、主件+附件2、主件+附件1+附件2 這三個物品進行揹包,就可以了。

50平方裝修預算大概多少,50平米裝修預算大概是多少

50平方裝修預算大概多少 小戶型房屋裝修 全包 也需要有裝修標準。如果要高擋點精裝修,需要 1600 1700 平方裝修。如果是大眾化裝修,需要用 1100 1200元 平方,屬一般精裝修。如果想一般化裝修,可以投入 750 850元 平方,屬普通裝修了。如果按500 550元 平方裝修,就是屬簡單...

三方協議違約金問題,關於三方協議違約金的問題!!!

現在的很多人都被三方協議所困惑,其實沒必要。三方協議不屬於勞動法的範疇,不歸勞動合同法管轄,其中約定的違約金和押金應當認定為有效,只要不違反國家強制性規定。考取研究生屬於升學的範圍,而且根據你上上述所說,如果你考取研究生,三方協議就失效,則對方應退回你的押金。如果銀行單獨跟你籤協議,則屬於勞動合同的...

家裡要裝修,60平方,預算大概要多少啊

家裡裝修60平方 預算大概要多少 房屋裝修 全包 按裝修標準的 是 如果要高擋點精裝修,需要用 1600 1700 平方裝修 如果是大眾化裝修,需要 1100 1200元 平方,屬一般精裝修 如果想一般化裝修,用 800 900元 平方,屬普通裝修 如果按 500 600元 平方裝修,就屬簡單裝修了...