USACO 蛋糕塔(dp 分組揹包)

2021-08-18 16:17:39 字數 1101 閱讀 7697

【問題描述】

hl高中要舉行一場蛋糕塔比賽。注意,不是蛋糕比賽,而是蛋糕塔比賽。

學校會提供n種不同型別的蛋糕,第i種蛋糕的高度為hi(5 <= h_i <= t),營養價值為vi(1 <= vi<= 1,000,000),並且保證所有蛋糕的高度為5的整數倍,每種型別的蛋糕沒有數量限制。

蛋糕塔比賽的規則就是要求按照提供的蛋糕,壘成乙個高度不超過t(1 <= t <= 1,000)的蛋糕塔,並且要求這個蛋糕塔所有蛋糕的營養價值累加和最高。

因為蛋糕不是很結實,參加比賽的小x發現乙個現象,如果某塊蛋糕的高度超過k,那麼這塊蛋糕下面的所有蛋糕的高度都將被壓縮為自己高度的4/5,但是營養價值不會丟失。發現這個情況後的小x很興奮,現在他想知道,如何安排自己的蛋糕塔,能讓營養價值最高。

【輸入】

第一行三個整數:n,t和k

接下來n行,每行兩個整數:vi 和 hi。

【輸出】

乙個整數,表示蛋糕塔最大營養價值。

【輸入輸出樣例1】

cheese.in cheese.out

3 53 25

100 25

20 5

40 10 240

【樣例解釋】

有3種蛋糕,蛋糕塔的高度限制為53,高度必須超過25的蛋糕才能將其下面的蛋糕高度壓縮。我們按照下面的方法來壘蛋糕:

種類 高度 價值

[1] 25 100

[2] 4 20

[3] 8 40

[3] 8 40

[3] 8 40

最上的蛋糕將下方的蛋糕都壓縮為4/5.最大價值為240

【資料範圍】

40% 資料保證 n<=20

100% 資料保證 n<=100

題目很顯然地告訴我們這是完全揹包,也很顯然地告訴我們要變形,但我也很顯然地寫炸了。我是把壓縮的過程寫在完全揹包中間了,可能會出現二次壓縮各種處理問題。後來看到正解,發現只需要做一遍裸的完全揹包,再後面處理就可以了。……看code吧!

void init()

void work_dp()

這篇部落格寫得太水了,主要是看到正解之後就很顯然,…………

爬塔 分組揹包

高川最喜歡的遊戲當屬 slay the spire,這是一款爬塔遊戲,你需要從一座塔的底部一直爬到頂部,在爬塔的過程中,塔的每一層都有許多的寶物等你來拿。高川從塔的左側開始攀爬,從底部爬到頂部,再從右側從頂部逐步下到底部。塔總共有 n 層,每一層都有很多寶物從左到右排列。在左側攀爬時,他只能從每層的...

DP 分組揹包例題

例9.16 分組揹包 時間限制 1000 ms 記憶體限制 65536 kb 提交數 192 通過數 122 題目描述 乙個旅行者有乙個最多能裝 v公斤的揹包,現在有 n件物品,它們的重量分別是w1 w2,wn w1,w2,wn 它們的價值分別為c1 c2,cn c1,c2,cn 這些物品被劃分為若...

演算法筆記 揹包DP 分組揹包

1.分組揹包模板題目 有n組物品,每組有k種物品,每種物品有體積和價值,每組選乙個,不超過揹包體積v,求最大值。狀態轉移方程 f j max v i j 表示第i組物品第j種物品的體積,w含義一樣,表示價值 方程含義可以參考我之前的部落格,揹包dp 都有類似的解釋 來一組偽 for 列舉每一組 fo...