AT_aalc001_q.Number of Moves

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定正整数 N,M,QN,M,Q、一个长度为 NN 的由字符 0 和 1 组成的字符串 SS,以及一个长度为 NN 的正整数序列 A=(A1,A2,…,AN)A=(A_1,A_2,\ldots,A_N)。

你需要处理 QQ 个查询。每个查询属于以下两种类型之一:

  • 1 i:将字符串 SS 的第 ii 个字符 SiS_i 翻转(即若为 0 则变为 1,若为 1 则变为 0)。
  • 2 x l r:执行如下过程,并求最终获得的钱数:
    • 你从数轴上坐标为 xx 的位置出发,初始持有 00 日元。
    • 按照 i=l,l+1,…,ri=l,l+1,\ldots,r 的顺序,对每个 ii 执行以下操作:
      • 若 SiS_i 为 0,则面向负方向;若 SiS_i 为 1,则面向正方向。
      • 重复执行以下操作 AiA_i 次:
        • 若你当前面向的方向上,前方 11 单位处的坐标在区间 [0,M][0, M] 内(含端点),则移动到该坐标,并获得 11 日元;否则保持当前位置,钱数不变。

对于每个类型 2 的查询,请从指定的起始坐标 xx 出发,以 00 日元开始执行上述过程,且不同查询之间不继承位置或钱数。

输入格式

输入从标准输入中按以下格式给出:

NN MM QQ
SS
A1A_1 A2A_2 …\ldots ANA_N
query1\mathrm{query}_1
query2\mathrm{query}_2
⋮\vdots
queryQ\mathrm{query}_Q

每个查询以如下两种格式之一给出:

11 ii

22 xx ll rr

输出格式

设 qq 为类型 22 的查询次数。输出 qq 行,其中第 jj 行应包含针对第 jj 个类型 22 查询,在执行完相应操作后你所拥有的钱数。

输入输出样例

  • 输入#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 解释:
对于第 11 个查询,从坐标 55 出发,依次尝试向正方向、负方向、正方向、负方向、负方向移动。各阶段结束后的坐标依次为 9,1,4,0,09,1,4,0,0,共获得 1919 日元。

对于第 33 个查询,从坐标 55 出发,依次尝试向正方向、正方向、正方向、负方向、负方向移动。各阶段结束后的坐标依次为 9,10,10,4,29,10,10,4,2,共获得 1313 日元。

限制条件

  • 1≤N≤2×1051 \le N \le 2 \times 10^5
  • 1≤M≤1091 \le M \le 10^9
  • 1≤Q≤2×1051 \le Q \le 2 \times 10^5
  • SS 是一个长度为 NN 的字符串,仅由字符 0 和 1 组成。
  • 1≤Ai≤1091 \le A_i \le 10^9
  • 对于类型 11 的查询,满足 1≤i≤N1 \le i \le N
  • 对于类型 22 的查询,满足 0≤x≤M0 \le x \le M,1≤l≤r≤N1 \le l \le r \le N
  • 输入中的所有数值均为整数。

输入解题思路,AI测评打分。不知道怎么写?

首页