import sys
def main():
n = int(sys.stdin.readline().strip())
ll = list(int(sys.stdin.readline().strip()) for _ in range(n))
if n <= 2:
print(0)
return
jump = [0 for _ in range(n)]
climb = [0 for _ in range(n)]
climb[0], climb[1] = ll[0], ll[1]
for i in range(2, n):
jump[i] = min(climb[i - 2], climb[i - 1])
# 表示第i步选择跳的话,上一步只能是爬,需要的最少时间为第i-2第i-1步选择爬的最少时间
climb[i] = min(jump[i - 1], climb[i - 1]) + ll[i]
# 表示第i步选择爬的话,上一步跳和爬都可以,不管上一步是什么,需要的最少时间为上一步跳爬的最少时间与当前楼层高度的和
print(min(jump[n - 1], climb[n - 1]))
return
main()
报错一下午,把动态规划最重要的状态转移忘了...