AT_aalc001_q.Number of Moves
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定正整数 N,M,Q、一个长度为 N 的由字符 0 和 1 组成的字符串 S,以及一个长度为 N 的正整数序列 A=(A1,A2,…,AN)。
你需要处理 Q 个查询。每个查询属于以下两种类型之一:
1 i:将字符串 S 的第 i 个字符 Si 翻转(即若为0则变为1,若为1则变为0)。2 x l r:执行如下过程,并求最终获得的钱数:- 你从数轴上坐标为 x 的位置出发,初始持有 0 日元。
- 按照 i=l,l+1,…,r 的顺序,对每个 i 执行以下操作:
- 若 Si 为
0,则面向负方向;若 Si 为1,则面向正方向。 - 重复执行以下操作 Ai 次:
- 若你当前面向的方向上,前方 1 单位处的坐标在区间 [0,M] 内(含端点),则移动到该坐标,并获得 1 日元;否则保持当前位置,钱数不变。
- 若 Si 为
对于每个类型 2 的查询,请从指定的起始坐标 x 出发,以 0 日元开始执行上述过程,且不同查询之间不继承位置或钱数。
输入格式
输入从标准输入中按以下格式给出:
N M Q
S
A1 A2 … AN
query1
query2
⋮
queryQ
每个查询以如下两种格式之一给出:
1 i
2 x l r
输出格式
设 q 为类型 2 的查询次数。输出 q 行,其中第 j 行应包含针对第 j 个类型 2 查询,在执行完相应操作后你所拥有的钱数。
输入输出样例
输入#1
5 10 8 10100 4 8 3 6 2 2 5 1 5 1 2 2 5 1 5 2 0 2 4 1 5 2 10 4 5 2 3 3 3 1 1
输出#1
19 13 16 8 3
输入#2
3 4 5 010 10 1 10 2 0 1 3 2 4 1 3 1 1 2 2 1 2 2 2 2 3
输出#2
2 6 2 4
说明/提示
样例 1 解释:
对于第 1 个查询,从坐标 5 出发,依次尝试向正方向、负方向、正方向、负方向、负方向移动。各阶段结束后的坐标依次为 9,1,4,0,0,共获得 19 日元。
对于第 3 个查询,从坐标 5 出发,依次尝试向正方向、正方向、正方向、负方向、负方向移动。各阶段结束后的坐标依次为 9,10,10,4,2,共获得 13 日元。
限制条件
- 1≤N≤2×105
- 1≤M≤109
- 1≤Q≤2×105
- S 是一个长度为 N 的字符串,仅由字符
0和1组成。 - 1≤Ai≤109
- 对于类型 1 的查询,满足 1≤i≤N
- 对于类型 2 的查询,满足 0≤x≤M,1≤l≤r≤N
- 输入中的所有数值均为整数。
输入解题思路,AI测评打分。不知道怎么写?