根據題目描述,只有一開始會站在0這個格仔上,以後不會向這個格仔移動
假設f[i][j][k] 為 當前時間i,兩隻腳分別在j,k兩個格仔上的最小體力花費
第i個時間的狀態為f[i][a[i]][k]或者f[i][j][a[i]],即有乙隻腳在指定格仔上,所以分兩種情況列舉
轉移方程
f[i][j][a[i]] = min(f[i][j][a[i]],f[i-1][j][k]+move(a[i],k));
f[i][a[i]][k] = min(f[i][a[i]][k],f[i-1][j][k]+move(a[i],j));(j,k∈(0,4))
#include#includeview code#include
using
namespace
std;
#define n 10010
inta[n];
int f[n][5][5
];int n,ans = 100000
;int odd(int x)
int move(int x,int
y)int
main()
for (int i=0;i<=4;i++)//
注意從0開始列舉
for (int j=0;j<=4;j++)
ans =min(ans,f[n][i][j]);
printf("%d
",ans);
}
codevs 3049 舞蹈家懷特先生
題目描述 description 懷特先生是乙個大胖子。他很喜歡玩跳舞機 dance dance revolution,ddr 甚至希望有一天人家會腳踏 舞蹈家懷特先生 可惜現在他的動作根本不能稱作是在跳舞,儘管每次他都十分投入的表演。這也難怪,有他這樣的體型,玩跳舞機是相當費勁的。因此,他希望寫乙...
3049 舞蹈家懷特先生
時間限制 1 s 空間限制 64000 kb 題目等級 gold 輸入描述 input description 第一行n,表示有n個時刻 1 n 10000 第二到n 1行,每行乙個數,表示需要踩得版 輸出描述 output description 乙個數,最小消耗體力 樣例輸入 sample in...
題 字首和 NKOJ 3049 三分陣列
nkoj 3049 三分陣列 時間限制 10000 ms 空間限制 65536 kb 問題描述 給出乙個有n 個整數的陣列a 1 a 2 a n 有多少種方法把陣列分成3 個連續的子串行,使得各子串行的元素之和相等。也就是說,有多少個下標對i,j 2 i j n 1 滿足 sum a 1 a i 1...