爬塔難題(dp)

2021-09-02 11:43:32 字數 1144 閱讀 1842

problem description

小學妹被困在了雷鋒塔的頂端,英熊要去營救她。雷鋒塔的層數為n,每層的高度都不一樣。英熊每爬一層所耗費的時間與該層高度相同。

然鵝,英熊有一張飛毯,飛毯可以讓英熊直接飛過一層或兩層。飛毯速度很快,所以坐飛毯不需要時間。

每飛行一次,飛毯都會耗費所有能量,需要英熊自己至少爬上一層樓後才能恢復。請你幫英熊計算出他最短能達到塔頂救小學妹的時間,飛毯初始滿能量。

小學妹被困在了雷鋒塔的頂端,英熊要去營救她。雷鋒塔的層數為n,每層的高度都不一樣。英熊每爬一層所耗費的時間與該層高度相同。

然鵝,英熊有一張飛毯,飛毯可以讓英熊直接飛過一層或兩層。飛毯速度很快,所以坐飛毯不需要時間。

每飛行一次,飛毯都會耗費所有能量,需要英熊自己至少爬上一層樓後才能恢復。請你幫英熊計算出他最短能達到塔頂救小學妹的時間,飛毯初始滿能量。

input

第一行有乙個整數t(0<=t<=1000),表示樣例的個數。

接下來的t行,每行為一組樣例,每行由n+1個正整數(n<=100000,所有正整數<=100000)組成,第乙個整數代表雷峰塔的層數,剩下的整數表示每層的高度。

output

輸出達到塔頂救小學妹所需的最短時間

sample input

23 1 2 3

5 4 3 1 2 3

sample output11

**如下:

#include#includeusing namespace std;

/*爬塔難題

我們要到達的是

方案一(直接爬上去,不用飛毯):dp[i-1]+height[i],走的是height[i]

方案二(飛毯只飛一層):dp[i-2]+height[i-1],走的是height[i-1],height[i]是飛的

方案三(飛毯飛兩層): dp[i-3]+height[i-2],走的是 height[i-2],height[i-1]和height[i]是飛的

*/int n; //塔的層數

int dp[100010]; //狀態轉移陣列

int height[100010]; //每層塔的高度

int main()

cout<} return 0;

}

爬塔 分組揹包

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

數塔(簡單DP)

problem description 在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?已經告訴你了,這是個dp的題目,你能ac嗎?輸入資料首先包括乙個整數c,表示測試例項的個數,...

DP數塔問題

有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?有一組測試樣例,測試例項的第一行是乙個整數n 1 n 100 表示數塔的高度,接下來用n行數字表示數塔,其中第i行有個i個整數,且所有的整數均在區間 0,99 內。output 對於每個測試例項,輸出...