#3445. 机器人的能量(energy)

机器人的能量(energy)

题目描述

小 Q 设计了一个探险机器人,它需要在一条笔直的道路上从起点 X=0X=0 走到终点 X=nX=n。机器人配备了两组能源:一组普通电池和一组可充电的太阳能蓄电池。

道路被分为 nn 段,第 ii 段(从 X=i1X=i-1X=iX=i)可能暴露在阳光下,也可能处于阴影中。用一个长度为 nn 的数组 ss 来描述:si=1s_i=1 表示第 ii 段有阳光,si=0s_i=0 表示没有阳光。

机器人初始拥有 bb 单位电池电量和 aa 单位蓄电池电量,电池的最大容量为 bb,蓄电池的最大容量为 aa。每通过一段路,机器人必须选择消耗 11 单位电池电量或 11 单位蓄电池电量(只有当该能源仍有剩余电量时才能选择)。

特别地,如果当前路段有阳光(si=1s_i=1),并且机器人选择消耗电池电量通过,那么蓄电池会获得 11 单位充电(但不能超过其最大容量 aa)。消耗蓄电池电量通过任何路段都不会触发充电。

你的任务是:在最优的操作策略下,机器人最多能通过多少段路?

输入格式

energy.in 文件读入数据。

第一行包含三个整数 n,b,an, b, a,分别表示路段总数、电池初始电量和蓄电池初始电量。

第二行包含 nn 个整数 s1,s2,,sns_1, s_2, \dots, s_nsi{0,1}s_i \in \{0, 1\},依次表示每段路是否有阳光。

输出格式

输出到 energy.out 文件。

输出一个整数,表示机器人最多能通过的段数。

样例

样例 1

3 2 2
1 0 1
3

样例 1 解释

第 1 段有阳光,使用电池(剩余 b=1b=1a=2a=2,蓄电池已满无法充电)。第 2 段无阳光,使用蓄电池(剩余 b=1b=1a=1a=1)。第 3 段有阳光,使用电池,蓄电池充电(剩余 b=0b=0a=2a=2)。机器人成功通过全部 3 段。

样例 2

4 1 1
0 1 0 1
3

样例 2 解释

第 1 段无阳光,使用蓄电池(剩余 b=1b=1a=0a=0)。第 2 段有阳光,使用电池,蓄电池充电(剩余 b=0b=0a=1a=1)。第 3 段无阳光,使用蓄电池(剩余 b=0b=0a=0a=0)。此时两种电量均为 00,无法通过第 4 段。最多通过 3 段。

样例 3

点击链接 ex_energy3.inex_energy3.ans 下载大样例 3 的输入数据和输出数据。

数据范围

对于所有测试数据,保证 1n,b,a2×1051 \le n, b, a \le 2 \times 10^5si{0,1}s_i \in \{0, 1\}

子任务 测试点 分数 附加约束条件
11 141 \sim 4 2020 n10n \le 10b,a5b, a \le 5
22 585 \sim 8 所有 si=0s_i = 0n100n \le 100
33 9129 \sim 12 所有 si=1s_i = 1n100n \le 100
44 131613 \sim 16 n1000n \le 1000
55 172017 \sim 20 无额外限制

每个测试点独立计分,单个测试点 55 分,总分 100100 分。

提示

各组能源的电量在任何时刻均为非负整数,且不超过初始容量。