BISHI132 小红的地砖¶
简单通过率 69.15%python3样例通过牛客 AC
讲解章节:DP 入门
一句话
从第 1 块走到第 n 块,每步走 1 或 2 格,最小体力。
解题思路¶
这题考什么¶
BISHI131 的「最优化」版本:把「方案计数」的加法换成「求最优」的 min。
含义:走到第 i 块必然是从 i-1 或 i-2 迈过来的,走到哪一块都要付出 a_i。
数据规模与复杂度¶
n <= 1e5,O(n) 时间、O(1) 空间(滚动两个变量即可,不用开数组)。
坑在哪¶
- n = 1 时答案是 0(保证 a_1 = 0,且不需要移动),要特判, 否则 f_2 的边界会越界;
- f_1 = a_1 = 0 是起点的体力(题目保证 a_1 = a_n = 0,但按 a_1 算更稳);
- f_2 只有一种来法(从第 1 块迈 1 步),不能套用 min(f_1, f_0) —— f_0 根本不存在。把 f_2 = a_1 + a_2 直接写成初值、递推从 i = 3 起步, 就绕开了这条边界;n = 2 时循环一次都不转,答案正是这个初值。
参考实现¶
[:octicons-arrow-left-16: BISHI131](BISHI131.md) [BISHI133 :octicons-arrow-right-16:](BISHI133.md)