【問題描述】
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...