#P6812. 「MCOI-02」Ancestor 先辈

「MCOI-02」Ancestor 先辈

题目背景

这题跟 MC 有关的就是题目背景出现了三次 MC,提示说明出现了一次 MC。

           ▃▆█▇▄▖
       ▟◤▖     ◥█  
   ◢◤    ◢▐       ▐▉
 ▗◤       ▂ ▗▖  ▕ █▎
 ◤ ▗▅▖ ◥▄  ▀▀▀◣ █▊
▐ ▕▎  ◥▖◣◤    ◢██
█◣ ◥▅█▀       ▐███◤
▐█▙▂         ◢███◤
 ◥██◣     ◢▄◤
   ▀██▅▇▀▎▇

题目描述

对于两个序列 a,ba,b,如果满足:

imin(n,m),s.t. aibi\forall i \leq \min(n,m),s.t.\ a_i \leq b_i

那么我们称 aabb 屑(nnaa 的长度,mmbb 的长度)。

如果对于一个序列 aa,它比它的所有后缀都屑,那么我们称这个序列为先辈。

给定一个长为 nn 的序列 aia_i,共有 kk 次操作,包括以下两种:

  • 1 l r x 区间 [l,r][l,r] 加上 xx
  • 2 l r 查询区间 [l,r][l,r] 是不是先辈。

输入格式

第一行两个整数 n,kn,k 代表序列长度与操作数。
第二行 nn 个整数 aia_i 代表数列每一项的值。
接下来 kk 行每行首先三个整数 opt,l,ropt,l,r

  • 如果 opt=1opt=1,接下来一个整数 xx 代表操作 11
  • 如果 opt=2opt=2,代表操作 22

由于数据故障,rr 可能取到 n+1n+1,请在这类情况下自行令 r=nr=n,谢谢。

输出格式

对于每个操作 22,输出询问结果。

7 5
1 9 1 9 8 1 0
2 1 3
1 3 4 9
2 1 4
1 5 6 11
2 2 6
No
Yes
No

提示

样例说明

对于样例 11

  1. 询问区间 [1,3][1,3] 是否为先辈,不是,输出 No
  2. 区间 [3,4][3,4] 加上 99,现在序列为 {1,9,10,18,8,1,0}\{1,9,10,18,8,1,0\}
  3. 询问区间 [1,4][1,4] 是否为先辈,是,输出 Yes
  4. 区间 [5,6][5,6] 加上 1111,现在序列为 {1,9,10,18,19,12,0}\{1,9,10,18,19,12,0\}
  5. 询问区间 [2,6][2,6] 是否为先辈,不是,输出 No

数据规模与约定

本题采用捆绑测试。

  • Subtask 1(1 pts)  \ \ :询问操作的区间长度均为 11
  • Subtask 2(9 pts)  \ \ n,k103n,k \le 10^3
  • Subtask 3(10 pts):n,k5×103n,k\le 5\times 10^3
  • Subtask 4(10 pts):只有查询操作。
  • Subtask 5(10 pts):修改操作的数量不超过 100100
  • Subtask 6(20 pts):n,k105n,k \le 10^5
  • Subtask 7(40 pts):无特殊限制。

对于 100%100\% 的数据,1n,k1061 \le n,k \le 10^6ai,x109|a_i|,|x| \le 10^9

本题强制 O2O2 优化。

说明

Minecraft OI Round 2 C

  • Maker:happydef
  • Tester:tarjin