P2800 又上鎖妖塔

2021-09-24 23:04:29 字數 722 閱讀 4831

看,題面被吃掉了!

這道題是一道經典的dp,難點在於怎樣列狀態轉移方程。

首先,我們要將原問題 (爬到第n層的最小時間) 分解成若干個子問題。

我在分解子問題的時候遇到了一點點小困難。題目限制不能連續飛躍,因此怎樣定義狀態是解題的關鍵

我們定義f[i]表示到達第i層的時候爬上去的最大值

因此我們很容易地找到它的子問題:

1.爬上第i層,f[i]=f[i−1]+a[i]f[i]=f[i-1]+a[i]f[i]=f[i−1]+a[i]

2.飛躍上第i層,f[i]=min(f[i−2]+a[i],f[i−3]+a[i])f[i]=min(f[i-2]+a[i],f[i-3]+a[i])f[i]=min(f[i−2]+a[i],f[i−3]+a[i])

#include

#include

#include

#include

#include

using

namespace std;

int n,a[

1000005

],f[

1000005][

3];int

main()

printf

("%d\n"

,min

(f[n+1]

[0],f[n+1]

[1])

);return0;

}

P2800 又上鎖妖塔 dp

傳送門 思路 仙劍啊 必須有題解!思路 一道動態規劃題,你可以有三種選擇,跳一層,二層,或花費時間爬一層。所以每次在這三種狀態裡選擇最小的即可。相似題型 美元匯率 from qingdao agricultural university created by xiangwangacmer date ...

洛谷P2800 又上鎖妖塔

小d在x星買完了想要的東西,在飛往下乙個目的地的途中,正無聊的他轉頭看了看身邊的小a,發現小a正在玩 仙劍 可是小a很奇怪,他一直在鎖妖塔的周圍轉來轉去,可是就是不進去,於是小d問他 你在幹什麼?怎麼不上去?小a說 我在想怎麼從鎖妖塔外面爬上去 倒 鎖妖塔的建造很特別,塔總共有n層,但是高度卻不相同...

洛谷 P2800 又上鎖妖塔

小d在x星買完了想要的東西,在飛往下乙個目的地的途中,正無聊的他轉頭看了看身邊的小a,發現小a正在玩 仙劍 可是小a很奇怪,他一直在鎖妖塔的周圍轉來轉去,可是就是不進去,於是小d問他 你在幹什麼?怎麼不上去?小a說 我在想怎麼從鎖妖塔外面爬上去 倒 鎖妖塔的建造很特別,塔總共有n層,但是高度卻不相同...