-
嗯,動態規劃,看來你不是很擅長動態規劃。
返回 f[i] 表示在像 i 這樣的大空間中可以獲得的最大收益。
那麼你有多少空間,最終的答案是你能在這個大空間裡得到的最大好處。
所以它是 f[n]。
-
樓上空間可能會爆炸,並且有乙個一維的解決方案。
varn,m,i,j,k,x:longint;
v,p:array[0..25]of longint;
f:array[0..30000] of longint;
function max(a,b:longint):longint;
beginif a>b then exit(a) else exit(b);
end;begin
readln(n,m);
for i:=1 to m do readln(v[i],p[i]);
for i:=1 to m do
for j:=n downto v[i] dof[j]:=max(f[j],f[j-v[i]]+p[i]*v[i]);
write(f[n]);
end.
-
樓上不是應該輸出 f[m] 嗎?
是的,我錯了。
-
你的問題不是改進組的“金明的預算計畫”,而是通識教育組的“快樂的金明”
快樂金明其實很簡單,就是01背包稍微改動了一下,你看**var f:array[1..30001]of longint;
i,x,m,n,w,c:longint;
function max(x,y:longint):longint;
beginif x>y then exit(x) else exit(y);
end;begin
readln(m,n);
for i:=1 to n do beginreadln(w,c);和重要性。
c:=c*w;值 = 重要性***。
對於 x:=m downto w do 01 背包 f[x]:=max(f[x-w]+c,f[x]);
end;writeln(f[m]);結果。
end.就這麼簡單。
-
很高興金明,我沒有找到金明的預算計畫。
-
嗯,這是乙個如此罕見的話題。
領域是什麼?
數學? 統計學?
邏輯? 還是什麼?
-
如果用f[i]表示使用i元可以獲得的最大收益,w[i]表示專案的重要性,p[i]表示專案**,c[i]:=w[i]*p[i],那麼在這個問題中,p是成本,c是收入。 動態傳遞方程為:孫有書。
f[i]=max
在您的出價中,s[i,j] 表示在考慮前 i 項並且只有 j 美元時可以獲得的最大收益。
這一行的程式,"澤紅很高興"作為確定大小的函式,返回兩個引數中較大的乙個; 討論是否購買第 i 篇文章。 如果你買了,你要花v[i]元才能得到v[i]*p[i]收入; 如果你不買它,沒有變化,它仍然與上乙個專案討論時相同。
s[i,j] 以較大者為準。
一般來說,大多數狗都是無情的,其實大多數動物都是這樣的。 他們沒有太多的抱負和遠大的理想,他們不思考和探索生命和宇宙。 吃玩玩了一天,玩累了就睡,三者倒一飽,基本沒什麼影響心情的。 >>>More
1.要確定 a 是否能被 b 整除,只要 a 的餘數除以 b = 0,那麼它就可以被 b 整除。 否則,輸出 a、除法、b、等號、商(可用可整除函式 div 整除),然後使用 a-b* 商。 >>>More