ACM周訓練總結(七)

2021-10-05 05:44:30 字數 1095 閱讀 4782

本週學習了揹包問題。

其題目特徵是:

有n件物品和乙個容量為v的揹包。第i件物品的費用是c[i],價值是w[i]。求解將哪些物品裝入揹包可使價值總和最大。 這是最基礎的揹包問題,特點是:每種物品僅有一件,可以選擇放或不放

基本思路:

若只考慮第i件物品的策略(放或不放),那麼就可以轉化為乙個只牽扯前i-1件物品的問題:

1、如果不放第i件物品,那麼子問題就轉化為「前i-1件物品放入容量為v的揹包中」,價值為:f[i-1][v];

2、如果放第i件物品,那麼問題就轉化為「前i-1件物品放入剩下的容量為v-w[i]的揹包中」,此時能獲得的最大價值就是f[i-1][v-w[i]]再加上通過放入第i件物品獲得的價值w[i],即:f[i-1][v-w[i]]+c[i]。

用f[i][v]表示前i件物品恰放入乙個容量為v的揹包可以獲得的最大價值。

則其狀態轉移方程便是:

f[i][v]=max

題目特徵:

有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的體積是w[i],價值是c[i]。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。

基本思路:(轉化為01揹包問題

從每種物品的角度考慮,與它相關的策略已並非取或不取兩種,而是有取0件、取1件、取2件……等很多種。

第i種物品最多選v/w[i]件,於是可以把第i種物品轉化為v/w[i]件費用及價值均不變的物品,然後求解這個01揹包問題。

若將一種物品拆分為多個物品,則我們可以得到更高效的轉化方法:**將第i種物品拆成費用為w[i]2k、價值為c[i]*2k的若干件物品,其中k滿足w[i]2^k<=v

——————————————————————————————————

以上即為本週上課時學習的內容,下面是對本週學習狀態的總結:大體來說,兩個字:頹廢。不能再繼續這樣下去了,必須逼自己一下了!而且老師也下了最後通牒,這也算是對我的乙個必須努力的理由吧,當然,我知道努力都是為了自己,但越這樣想,我內心便越迷茫,索性找個更能激勵自己的藉口,加油!

ACM周訓練總結(三)

不知不覺,周訓練總結已經到了第三篇,本週依然是進行了貪心演算法的相關訓練,在本週的做出的題目中,我認為具有代表性的,最簡單的可用貪心解決的題目是 書架一題 書架一題 書架 貪心 這是一道典型的最優選擇的問題 即給出 n 個物品,第 i 個物品的量為 wi,選擇盡量少的物品,使得其總量超過 c 其貪心...

acm 一周訓練總結

一周 總的來說 狀壓dp 數學 狀壓dp 的概念就是 根據 所選物體的多種狀態 將其壓縮為乙個二進位制形式 比如 一行 101 表示1開0關1開 這是一種狀態,dp 找狀態轉移方程 兩種狀態不能重合 在選取可以的 逐步dp 我認為 這個過程類似搜尋 dfs 逐步找適合的 最後列舉 我是看例題 看懂的...

第七周訓練總結(二)

這週末時間比較充裕,有時間複習專業課,也有時間昨acm。這幾天主要還是做題,因為馬上要截止,所以比較積極。i題 題意 給你乙個序列,有兩個操作,1是將區間 a,b 內滿足 i a k 0的位置加上c,2是查詢a位置的數。解題思路 因為k比較小,所以可以對於每乙個k建立乙個樹狀陣列,這樣還不夠,無法確...