分析 考虑上一层还是上两层还是爬上去 AC代码 #include <bits/stdc++.h> using namespace std; int f[1000005],a[1000005]; int main() { int n; scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&a[i]); for (int i=1;i<=n;i++) f[i]=min(f[i-1]+a…
P2800 又上锁妖塔 [温馨提示]使用仙术时飞过一层塔不花费时间,若爬过去,该层有多高,就要花费多长时间 我们可以用 f [ i ] 表示到达第 i 层时所用最短时间 到达第 i 层可以有两类方法: 爬过去:f [ i - 1 ] + a [ i ] 飞过去:f [ i - 2 ] + a [ i - 1 ] (跨越一层) f [ i - 3 ] + a [ i - 2 ] (跨越两层) 所以转移方程:f [ i ] = min ( f…
题目链接:https://www.luogu.org/problemnew/show/P1002 题目还算良心,提醒了结果可能很大,确实爆了int范围, 这是一开始写的版本,用递归做的,先给地图做标记,每到一个点,这个点可以走的话,选择向下走还是向右走,但是会超时. #include <iostream> using namespace std; ][]; int M, N; ; void move(int i, int j) { if (i == N && j == M) {…