CF1154D Walking Robot

题目描述

有一个机器人停留在 $X=0$ 的 $Ox$ 轴上。他需要走到 $X=n$。你正在控制这个机器人,并决定他如何前进。机器人有一个电池和一个带有太阳能板的蓄电池。 路径上的第 $i$ 段(从 $X=i-1$ 到 $X=i$)可能暴露在阳光下,也可能没有。数组 $s$ 表示哪些路段暴露在阳光下:如果第 $i$ 段暴露在阳光下,则 $s_i=1$,否则 $s_i=0$。 机器人有一个容量为 $b$ 的电池和一个容量为 $a$ 的蓄电池。对于每一段,你需要选择机器人使用哪种能源(可以是电池或蓄电池)前进到下一个点。如果机器人使用电池,则电池当前电量减少 $1$(如果电池电量为 $0$,则不能使用电池)。如果机器人使用蓄电池,则蓄电池当前电量减少 $1$(如果蓄电池电量为 $0$,则不能使用蓄电池)。 如果当前路段暴露在阳光下,并且机器人使用电池通过该路段,则蓄电池的电量增加 $1$(当然,电量不能超过其最大容量)。 如果使用蓄电池通过某段路,无论该段是否暴露在阳光下,蓄电池的电量都减少 $1$。 你知道机器人并不总是能够走到 $X=n$。你希望让机器人尽可能走得远。如果你最优地控制机器人,机器人最多能通过多少段路?

输入格式

输入的第一行包含三个整数 $n, b, a$($1 \le n, b, a \le 2 \cdot 10^5$),分别表示机器人的目标点、电池容量和蓄电池容量。 第二行包含 $n$ 个整数 $s_1, s_2, \dots, s_n$($0 \le s_i \le 1$),其中 $s_i=1$ 表示第 $i$ 段路暴露在阳光下,$s_i=0$ 表示未暴露。

输出格式

输出一个整数,表示如果你最优地控制机器人,机器人最多能通过多少段路。

说明/提示

在第一个样例中,机器人可以通过第一段使用蓄电池,此时电量为 $b=2$,$a=0$。第二段可以用电池通过,此时电量为 $b=1$,$a=1$。第三段可以用蓄电池通过,此时电量为 $b=1$,$a=0$。第四段可以用电池通过,此时电量为 $b=0$,$a=1$。第五段可以用蓄电池通过。 在第二个样例中,机器人最多可以通过三段路,可以任意顺序使用两次电池和一次蓄电池。 由 ChatGPT 4.1 翻译