#L0339. 最多能走多少格子呢
最多能走多少格子呢
题目背景
Special for beginners, ^_^
题目描述
有 n 个格子排成一排,编号 1 到 n。
每个格子里有一只机器人,每只机器人有一个方向:
0 表示向左
1 表示向右
同时每个格子里还有一个整数 ai。
你从位置 1 开始移动,规则如下:
如果当前位置机器人的方向是 0,你向左移动 ai 步。
如果当前位置机器人的方向是 1,你向右移动 ai 步。
每次离开一个格子时,该格子的方向会 翻转(0 变 1,1 变 0)。
如果发生以下情况就停止:
走到了区间外(小于 1 或大于 n)
进入了某个格子 第二次
请输出 一共访问了多少个不同的格子。
输入格式
第一行输入一个整数 n。
第二行输入 n 个整数,表示机器人的方向:
d1 d2 ... dn
其中 di 为 0 或 1。
第三行输入 n 个整数:
a1 a2 ... an
数据范围:
1 ≤ n ≤ 2e5 1 ≤ ai ≤ 1e9 di ∈ {0,1}
输出格式
输出一个整数,表示访问过的不同格子数量。
样例
5
1 0 1 1 0
2 1 2 1 3
4
样例解释
初始在位置 1。
位置 1:方向为 1,向右走 2 步,到达 3,离开后方向翻转。
位置 3:方向为 1,向右走 2 步,到达 5,离开后方向翻转。
位置 5:方向为 0,向左走 3 步,到达 2,离开后方向翻转。
位置 2:方向为 0,向左走 1 步,到达 1,离开后方向翻转。
此时再次进入位置 1,而位置 1 已经访问过,因此停止。
访问过的格子为:
1 3 5 2
数量为:
4