完全揹包問題(f m)

2021-07-26 21:47:24 字數 1504 閱讀 4870

完全揹包可以說是建立在01揹包基礎之上的,這兩個是最基本的揹包問題,先來道題。

problem description

小p非常喜歡玩dota,不分晝夜的玩

,結果他連做夢也都是裡面的畫面,一天晚上小p剛躺下就做了乙個神奇的夢。。。

不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票(記住,只有一張鈔票),為了防止自己在戰鬥中頻繁的死掉,他決定給自己買一些道具,於是他來到了地精商店前.

死亡騎士:」我要買道具!」

地精商人:」我們這裡有三種道具,血瓶150塊乙個,魔法藥200塊乙個,無敵藥水350塊乙個.」

死亡騎士:」好的,給我乙個血瓶.」

說完他掏出那張n元的大鈔遞給地精商人.

地精商人:」我忘了提醒你了,我們這裡沒有找客人錢的習慣的,多的錢我們都當小費收了的,嘿嘿.」

死亡騎士:」……」

死亡騎士想,與其把錢當小費送個他還不如自己多買一點道具,反正以後都要買的,早點買了放在家裡也好,但是要盡量少讓他賺小費.

現在死亡騎士感覺自己的智商不夠用所以希望小p幫他計算一下,最少他要給地精商人多少小費.但是小p的智商可是出了名的「不忍直視」啊,聰明非凡的你所以你能幫幫他嗎?

input

輸入資料的第一行是乙個整數t(1<=t<=100),代表測試資料的數量.然後是t行測試資料,每個測試資料只包含乙個正整數n(1<=n<=10000),n代表死亡騎士手中鈔票的面值.

注意:地精商店只有題中描述的三種道具.

output

對於每組測試資料,請你輸出死亡騎士最少要浪費多少錢給地精商人作為小費.

example input

2 380

200example output

30 0

嗚喵王,第一任的耐奧祖,是個獸族薩滿,第二個是阿爾薩斯(雖然很多人都說不算,可是比我挺喜歡他的),人族洛丹倫王子,第三任伯瓦爾,人族聖騎。。。。(犧牲自我變做巫妖王)所以說呢,嗚喵王。。。。(⊙o⊙)…扯遠了,好了,讓我們來看看這個題吧。。。。

先來說說我們的完全揹包的思想,首先最重要的狀態轉移方程,和01揹包也差不多:dp[j] = max(k*dp[j],k*dp[j-w[i]] + p[i])。沒錯就是這個,不過呢,這個k顯然是不容易得到的,所以呢。。。。。我們就假裝不知道這個k,讓它自己裝,撞到裝不下為止,而且呢,給你一定容量的袋子,讓你去裝一堆寶石,一堆金子,一堆銀子,你肯定先把寶石裝完,裝完後再裝金子。。。。。。。。一定要牢牢記住這一條!!!

好了,來看看**

#include 

#include

int max(int a,int b)

int main()

int s = m - dp[m];

printf("%d\n",s);

}}

可以看出,和01揹包不太一樣的是這裡第二個巢狀的for迴圈是乙個正序的改變,因為這裡你要記住,這個不需要向往常一樣,逆推,當我們把當前狀態處理好後再去處理下乙個狀態,而不是這個狀態由上乙個或者前面那個比較後得到。。。。

揹包問題(完全揹包)

1.矩陣鏈乘法 2.投資組合問題 3.完全揹包問題 4.01揹包問題 5.最長公共子串行 乙個揹包,可以放入n種物品,物品j的重量和價值分別為,如果揹包的最大重量限制是b,怎麼樣選擇放入揹包的物品以使得揹包的總價值最大?組合優化問題,設表示裝入揹包的第j個物品的數量,解可以表示為。那麼目標函式和約束...

完全揹包問題

這個是從ppt上弄過來的。完全揹包問題 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。放入第i種物品的耗費的空間是ci,得到的價值是wi。求解 將哪些物品裝入揹包,可使這些物品的耗費的空間總和不超過揹包容量,且價值總和最大 基本思路 這個問題非常類似於01揹包問題,所不同的是每種物品有無限...

完全揹包問題

設有n種物品,每種物品有乙個重量及乙個價值。但每種物品的數量是無限的,同時有乙個揹包,最大載重量為m,今從n種物品中選取若干件 用乙個物品可以多次選取 使其重量的和小於等於m,而價值的和為最大。輸入有多組資料,對於每組輸入資料第1行 兩個整數,m 揹包容量,m 200 和n 物品數量,n 30 第2...