soj 3360: buying hay
簡介題意:農夫買乾草,需要買h,認識n個賣乾草的商人,每人的基礎購買包數是p_i,**為c_i,不拆開賣,但是可以買很多份。問最少多少錢可以至少滿足h乾草的需求。
這就是個完全揹包,不過和以前完全揹包不同的是,可以每乙份多加幾次。
平時一般都從j=sum到0,dp[j] = min(dp[j-x]+y,dp[j]),在此處我們就用第二種方法吧,j從0開始到h,dp[j+x]=min(dp[j+x],dp[j]+y)。
為什麼不用平時從h到0,因為從0到h可以將x多算很多次,符合題意,先算出可以包含x的dp[j],以後每次運算更大的dp[j]都可以用上前面小的,並且包含了x的dp[j]。
#include#include#include#define inf 0x3f3f3f3f
#define max 55050
int hay[110][2];
int dp[max];
using namespace std;
int main()
return 0;
}
通過前幾篇, 應該已經學好揹包啦,超簡單!是不是!
soj 3300 揹包裝滿(完全揹包)
soj3300 stockholm coins 簡介題意 有n種硬幣,取錢,取多少才能把所有硬幣種類都取齊,即,每種至少取一枚的最少取得錢數是多少。分析 如果說把所有種類錢幣都取出來的最小值,那不就是所有幣種幣值之和嗎?題目中也沒說有其他面額的錢呀,或者紙幣啥的?所以預設滿足題意輸出sum就行了。然...
soj 2222 01揹包變形
背景 wa tl 看來揹包還是很欠缺啊 思路1 1500ms 變形的01揹包。把題目改為 選擇一組hp和大於等於所需血量且這組物品的分數之和最小,即可。這裡把hp看做cost,score看做weight。但是這個題有個特點是最後選擇hp必須大於等於k,容易想到,最多我們會有k 10000 10000...
01揹包,完全揹包
動態規劃 動態規劃的核心是狀態以及狀態轉移方程。需要定義乙個 i,j 狀態以及該狀態的指標函式d i,j 01揹包 有n種物品,每種只有乙個,第i件物品的體積為vi質量為wi。選一些物品裝到體積為c的揹包中,使其體積不超過c的前提下重量最大。namevw abcd e 子問題定義 dp i j 表示...