问题 E: 咖啡的罪恶

内存限制:263 MB 时间限制:8 S
题面:传统 评测方式:文本比较 上传者:
提交:1 通过:1

题目描述

Koyuki 通过出售梦境转移器赚到了一大笔钱,只可惜她在走廊里不慎撞到了拿着咖啡的 Noa,导致 Noa 手上的文件洒满了咖啡。更严重的是,这些文件是 Noa 特意为老师准备的。现在,她决定没收 Koyuki 的所得,并要求她完成下面的题目。

Noa 定义一个长度为 ϵ+1ϵ+1 的非负整数序列 aδ,aδ+1,aδ+2,⋯,aδ+ϵaδ,aδ+1,aδ+2,,aδ+ϵδδ 为非负整数)是一个 咖啡序列 当且仅当所有整数 ii0≤i≤ϵ0iϵ)均满足其在序列中的出现次数恰好为 aδ+iaδ+i

她给定了一个长度为 nn 的非负整数序列 b1,b2,b3,⋯,bnb1,b2,b3,,bn,并要求 Koyuki 完成 qq 次操作。每次操作形如:

  1. 1 x p(操作 1):令 bx:=pbx:=p
  2. 2 l r(操作 2):对于所有满足 l≤L≤R≤rlLRr 的咖啡序列 bL,bL+1,bL+2,⋯,bRbL,bL+1,bL+2,,bR,计算它的长度(也就是 R−L+1RL+1)的最大值。若不存在任何满足条件的咖啡序列,则最大值为 00

Koyuki 注意到身旁的你正在打程序设计竞赛,于是顺手将题目扔给了你。当你转过头时,只隐约看见她跑去的背影。Noa 向你道了歉,并保证假如你做出了这道题目,她就会带 Koyuki 亲自来道歉。

输入格式

本题包含多组测试数据。

来自 Noa 的温馨提示:本题输入输出量较大,对于使用 C++ 语言参加竞赛的选手,强烈建议使用关闭同步流的 cin 和 cout 完成输入输出。

首先在第一行输入一个整数 TT1≤T≤101T10)表示测试数据组数。

对于每一组测试数据,输入包含 q+2q+2 行。

第一行包含两个整数 n,qn,q1≤n,q≤2×1051n,q2×105),分别表示序列的长度和操作的次数。

第二行包含 nn 个整数 b1,b2,b3,⋯,bnb1,b2,b3,,bn0≤b1,b2,b3,⋯,bn≤n0b1,b2,b3,,bnn)表示序列的元素。

接下来 qq 行,每行首先包含一个整数 opop1≤op≤21op2)表示操作的类型,接下来包含两个整数 x,px,p 或 l,rl,r 表示一次操作。

保证在所有操作 1 中,op=1op=11≤x≤n1xn0≤p≤n0pn。保证在所有操作 2 中,op=2op=21≤l≤r≤n1lrn

输出格式

对于每一组测试数据,对于每一次操作 2,输出包含一行一个整数表示满足条件的咖啡序列的长度最大值。若不存在,则答案为 00

输入样例 复制

1
12 8
2 1 2 0 0 3 2 1 1 0 0 0
2 1 4
2 1 5
2 1 6
2 1 10
2 1 12
2 6 12
1 2 0
2 1 4

输出样例 复制

0
5
5
5
7
7
4

数据范围与提示

在样例的测试数据中,共有 88 次操作:

  1. 第 11 次操作的类型为操作 2,l=1,r=4l=1,r=4。答案为 00
  2. 第 2,3,42,3,4 次操作的类型为操作 2,l=1,r=5/6/10l=1,r=5/6/10。在 L=1,R=5L=1,R=5 时,序列 b1=2,b2=1,b3=2,b4=0,b5=0b1=2,b2=1,b3=2,b4=0,b5=0 是咖啡序列。答案均为 55
  3. 第 5,65,6 次操作的类型为操作 2,l=1/6,r=12l=1/6,r=12。在 L=6,R=12L=6,R=12 时,序列 b6=3,b7=2,b8=1,b9=1,b10=0,b11=0,b12=0b6=3,b7=2,b8=1,b9=1,b10=0,b11=0,b12=0 是咖啡序列。答案均为 77
  4. 第 77 次操作的类型为操作 1,x=2,p=0x=2,p=0。此时 b2:=0b2:=0
  5. 第 88 次操作的类型为操作 2,l=1,r=4l=1,r=4。在 L=1,R=4L=1,R=4 时,序列 b1=2,b2=0,b3=2,b4=0b1=2,b2=0,b3=2,b4=0 是咖啡序列。答案为 44

分类标签