AT_aalc001_w.Adjacent Add

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

对于一个长度为 kk 的整数序列 B=(B1,B2,…,Bk)B=(B_1,B_2,\ldots,B_k),考虑执行以下操作零次或多次:

  • 选择一个满足 1≤i≤k−11 \le i \le k-1 的整数 ii 和一个整数 xx(xx 可以为负数);
  • 将 xx 加到 BiB_i 上,并将 2x2x 加到 Bi+1B_{i+1} 上。

若通过上述操作可使 BB 的所有元素变为相等,则称 BB 为好序列。

给定一个长度为 NN 的非负整数序列 A=(A1,A2,…,AN)A=(A_1,A_2,\ldots,A_N)。你需要处理 QQ 个查询,每个查询为以下两种类型之一:

  • 1 i x:将 AiA_i 修改为 xx;
  • 2 l r:判断子序列 (Al,Al+1,…,Ar)(A_l,A_{l+1},\ldots,A_r) 是否为好序列。

输入格式

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

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

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

11 ii xx

22 ll rr

输出格式

设 qq 为类型 22 的查询数量。输出 qq 行。在第 jj 行中,若第 jj 个类型 22 查询中的序列 (Al,Al+1,…,Ar)(A_l,A_{l+1},\ldots,A_r) 是一个好序列,则输出 Yes;否则输出 No。

输入输出样例

  • 输入#1

    5 7
    1 2 5 4 0
    2 1 1
    2 1 2
    2 1 3
    1 3 3
    2 1 3
    2 2 5
    2 1 5

    输出#1

    Yes
    Yes
    No
    Yes
    No
    No
  • 输入#2

    6 6
    1000000000 0 999999999 1 500000000 42
    2 1 6
    2 2 4
    1 4 1000000000
    2 2 4
    2 4 6
    2 3 3

    输出#2

    No
    No
    No
    Yes
    Yes

说明/提示

样例 1 解释:
第一次类型 2 的查询得到的序列为 (1)(1)。该序列的所有元素已相等,无需任何操作,因此它是一个“好序列”。

第二次类型 2 的查询得到的序列为 (1,2)(1,2)。执行一次操作,取 i=1, x=−1i=1,\,x=-1,可得到 (0,0)(0,0),因此它也是一个“好序列”。

约束条件

  • 1≤N≤2×1051 \le N \le 2 \times 10^5
  • 1≤Q≤2×1051 \le Q \le 2 \times 10^5
  • 0≤Ai≤1090 \le A_i \le 10^9
  • 对于类型 1 的查询:1≤i≤N1 \le i \le N,0≤x≤1090 \le x \le 10^9
  • 对于类型 2 的查询:1≤l≤r≤N1 \le l \le r \le N
  • 输入中的所有数值均为整数。

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

首页