爬塔 分組揹包

2021-10-11 13:06:12 字數 1291 閱讀 6684

高川最喜歡的遊戲當屬 slay the spire,這是一款爬塔遊戲,你需要從一座塔的底部一直爬到頂部,在爬塔的過程中,塔的每一層都有許多的寶物等你來拿。

高川從塔的左側開始攀爬,從底部爬到頂部,再從右側從頂部逐步下到底部。塔總共有 n 層,每一層都有很多寶物從左到右排列。在左側攀爬時,他只能從每層的最左邊按順序取寶物,在右側下降時,他只能從每層的最右邊按順序取寶物。每個寶物都有乙個價值,他最多拿 m 個寶物,他想知道自己從塔上下來時,最多可以拿的寶物價值和是多少。

輸入描述:

第一行輸入兩個正整數 n 和m 。表示塔的層數和最多能選的個數。

接下來 n 行,每行先輸入乙個數字 x。表示這一層寶物的個數。接下來輸入 x 個正整數,表示每個寶物的權重 c。

1≤n,x,c≤100

1≤m≤10000

輸入保證可挑選的物品大於等於 m 個.

輸出描述:

輸出乙個整數表示高川能拿走的最大價值和.

示例1輸入

2 32 3 2

4 1 4 1 5

輸出10

#include

#define max(a, b) (a > b ? a : b)

long

long

int sum[

101]

[102

], num[

101]

[101

], f[

10001

], las[

101]

[102

], ans[

101]

[102];

int sz[

101]

, ch[

101]

;int

main()

}for

(i =

1; i < n +

1; i++)}

for(i =

1; i <= n; i++)}

}for

(i =

1; i <= n; i++

) f[j]

=max

(f[j]

, f[j - k]

+ ans[i]

[k])

;//printf("%d %d %d %d %d %lld %lld\n",n,i,sz[i],j,k,ans[i][k],f[j]);}}

}printf

("%lld\n"

, f[m]);

return0;

}

USACO 蛋糕塔(dp 分組揹包)

問題描述 hl高中要舉行一場蛋糕塔比賽。注意,不是蛋糕比賽,而是蛋糕塔比賽。學校會提供n種不同型別的蛋糕,第i種蛋糕的高度為hi 5 h i t 營養價值為vi 1 vi 1,000,000 並且保證所有蛋糕的高度為5的整數倍,每種型別的蛋糕沒有數量限制。蛋糕塔比賽的規則就是要求按照提供的蛋糕,壘成...

通天之分組揹包 分組揹包

本人水平有限,題解不到為處,請多多諒解 本蒟蒻謝謝大家 題目 傳送門 分組揹包的模板 偽 1 for int i 1 i 組數 i 6 7 直接套模板即可。code 1 include2 pragma gcc optimize 3 3const int n 1e5 10 4 using namesp...

混合揹包 分組揹包

啥是混合揹包呢,就是包含01揹包,完全揹包,多重揹包。有n件物品,揹包承重最大為m,w i 代表重量,v i 代表價值,s i 代表種類。s i 1,可用1次,s i 0,可用無限次,s i 0,可用s i 次.解法 見 const int maxn 1e4 5 int n,m,dp m 1 w n...