UVA 674 揹包之殤

2021-06-18 16:52:34 字數 642 閱讀 1834

題目位址 :

本來以為對於簡單的揹包已經了解了,可還是在這道題上掛了彩。自己寫了兩種**。

第一種是對每類錢,列舉其拿的張數 dp[i][j]=累加dp[i-1][j-k*money] 我覺得8000-的資料,n3 也無所謂的,交上去t了。

俗語雲 t乃a之母 。起碼說明演算法是正確的,於是開始想優化的方法。

想起來 前幾天做的 poj1276 二進位制優化的揹包 

使用這個方法把演算法優化成n2logn過掉。

**如下:

#include#includeint dp[10000];

int money[1000];

int n;

int m[6];

int main()

} while(scanf("%d",&most)!=eof)

;int main()

}

後記:

其實在第一次優化的時候還是浪費了很多的時間。

對無限的多重揹包和有限的多重揹包來說,2進製優化的方式是不同的。

對有限的多重揹包,要用總量一次次減去2進製量,最後再加上剩餘量,這是為了保證每乙份物品都可以被利用到。

對於無線的多重揹包,不必考慮物品總額度和剩餘,只要2進製量的大小小於最大值即可。

uva674 完全揹包

題意 有5種硬幣1,5,10,25,50,現在隨意的給出乙個價錢,問你有幾種組合方式!輸入11 輸出41 1 10個 5 6 1 5 5 1,10 1 共4種 思路 滿足完全揹包思想,狀態轉移方程 dp i num k dp i dp i 為組合成i的不重複種數,num k 分別為1,5,10,25...

UVA 674 硬幣問題(完全揹包 列舉)

題意 給定金額n,有50,25,10,5,1這五種面值的錢,問共有多少種不同的找法 假設最少存在一種找法 這題我想了很久,都沒有找到合適的狀態轉移方程,最後看了別人寫的,又體會了半天,才算明白。分析 這題,寫不對原因在於,很容易就重複計算了。例如 11 中的 11111,5,111111 與 111...

UVA 562 DP入門之01揹包

題意 有一堆硬幣,如何平分,可以讓兩堆硬幣的價值之差最小 剛開始想貪心的,姿勢不對,直接wa 將硬幣總和sum求出來,將sum 2當做容器就好,搜尋sum 2 0 符合條件的 列舉出所有的可能性之和。然後最後就是 差值 q sum 2 最大值 如下 include include include i...