#P9530. [JOISC2022] 鱼 2

[JOISC2022] 鱼 2

题目背景

JOISC2022 D4T2

题目描述

JOI 君有 NN 条鱼,编号为 1,2,,N1,2,\dots,N。第 ii (1iN)(1 \le i \le N) 条鱼的大小为 AiA_i

当我们养鱼的时候,需要注意如下的一个事实:如果有两条鱼离得很近,那么随着时间的流逝,可能会有其中一条吃掉另一条。其中,两条鱼离得很近,当且仅当它们中间没有鱼。
更具体地,如果鱼 xx 的大小不小于鱼 yy 的大小,且鱼 x,yx,y 离得很近,那么 xx 可以吃掉 yy,且 xx 的大小变为原来 x,yx,y 的大小之和。如果 x,yx,y 一样大,那么 xx 吃掉 yyyy 吃掉 xx 都可能发生。

JOI 君会养 QQ 天鱼。为了消磨时光,他会进行如下的思想实验。在第 jj(1jQ)(1 \le j \le Q),JOI 君会进行如下行动中的一个:

  • 第一类:JOI 君给鱼 XjX_j 吃了某些秘制的食物。这会将鱼 XjX_j 的大小变为 YjY_j

  • 第二类:JOI 君将编号在区间 [Lj,Rj][L_j,R_j] 内的鱼单独拿出来,并进行以下实验:
    JOI 君将鱼 Lj,Lj+1,,RjL_j,L_j+1,\dots,R_j 从左到右依次放在一个鱼缸中。由于鱼们具有如上所述的特点,最后只有一条鱼会存活。存活的这条鱼的编号取决于在哪些时刻哪些鱼吃掉了哪些鱼。JOI 君想知道可能成为最后存活者的鱼的条数。在实验中,鱼的编号不会改变,也不能有两条鱼同时吃掉同一条鱼。

请写一个程序,对于给定的 JOI 君的鱼和实验的信息,计算每个第二类行动的答案来让 JOI 君能够证明或证伪自己的观点。注意这只是思想实验,并没有任何鱼真的被吃掉。

输入格式

第一行,一个正整数 NN,表示鱼的条数。

第二行,NN 个正整数 A1,A2,,ANA_1,A_2,\dots,A_N,表示每条鱼的大小。

第三行,一个正整数 QQ,表示养鱼的天数。
接下来 QQ 行,其中第 jj (1jQ)(1 \le j \le Q) 行包含若干个由空格分隔的整数,其中第一个整数为 TjT_j,表示操作类型。

  • Tj=1T_j=1,则该行还包含两个正整数 Xj,YjX_j,Y_j,表示 JOI 君第 jj 天进行了第一类行动。鱼 XjX_j 的大小变为 YjY_j
  • Tj=2T_j=2,则该行还包含两个正整数 Lj,RjL_j,R_j,表示 JOI 君第 jj 天进行了第二类行动。JOI 君对编号在 [Lj,Rj][L_j,R_j] 内的鱼进行了一次实验。

输出格式

对于每次第二类行动(即,对于每个满足 Tj=2T_j=2jj (1jQ)(1 \le j \le Q)),输出一行一个整数,表示可能成为最后存活者的鱼的条数。

5
6 4 2 2 6
6
2 1 5
2 1 3
1 3 1
2 2 5
2 1 5
2 2 4
5
2
2
3
1
13
10 4 2 5 20 5 4 8 20 10 3 3 7
1
2 1 13
7
12
32 32 4 1 1 1 1 4 4 16 32 128
7
2 1 12
2 2 6
2 8 10
2 1 9
2 3 8
2 5 9
2 2 12
12
1
1
2
6
2
1
10
2 3 5 10 1 3 4 9 5 2
8
2 1 10
1 10 5
2 1 10
1 4 1000000000
2 1 10
1 8 20
1 4 8
2 1 10
4
6
1
6

提示

【样例解释 #1】

66 天中,JOI 君进行了以下行动:

  • 第一天,他对鱼 1,2,3,4,51,2,3,4,5 进行了一次实验。
  • 第二天,他对鱼 1,2,31,2,3 进行了一次实验。
  • 第三天,他给鱼 33 吃了秘制食物,使其大小变为 11
  • 第四天,他对鱼 2,3,4,52,3,4,5 进行了一次实验。
  • 第五天,他对鱼 1,2,3,4,51,2,3,4,5 进行了一次实验。
  • 第六天,他对鱼 2,3,42,3,4 进行了一次实验。

第一天的实验的结果如下:

  • 鱼缸中的鱼的大小依次为 [6,4,2,2,6][6,4,2,2,6]
  • 例如,经过如下过程,鱼 22 会成为最后存活者。(其中粗体为鱼 22 的大小。)
    [6,4,2,2,6][6,\textbf 4,2,2,6](初始状态)\longrightarrow [6,4,4,6][6,\textbf 4,4,6](鱼 44 吃掉鱼 33\longrightarrow [6,8,6][6,\textbf 8,6](鱼 22 吃掉鱼 44\longrightarrow [14,6][\textbf{14},6](鱼 22 吃掉鱼 11\longrightarrow [20][\textbf{20}](鱼 22 吃掉鱼 55)。
  • 类似地,鱼 1,2,3,4,51,2,3,4,5 都可能成为最后存活者。因此答案为 55

该样例满足子任务 1,3,61,3,6 的限制。

【样例解释 #2】

该样例满足所有子任务的限制。

【样例解释 #3】

该样例满足子任务 1,3,4,61,3,4,6 的限制。

【样例解释 #4】

该样例满足子任务 1,3,5,61,3,5,6 的限制。

【数据范围】

对于所有数据,满足:

  • 1N,Q1000001 \le N,Q \le 100\,000
  • 1Ai1091 \le A_i \le 10^9 (1iN)(1\le i\le N)
  • Tj{1,2}T_j \in \{1,2\}
  • 1XjN1 \le X_j \le N (1jQ)(1\le j\le Q)
  • 1Yj1091 \le Y_j \le 10^9
  • 1LjRjN1 \le L_j \le R_j \le N (1jQ)(1 \le j \le Q)

详细子任务附加限制及分值如下表所示:

子任务编号 附加限制 分值
11 N500N \le 500Q500Q \le 500 55
22 Q=1Q=1Tj=2T_j=2Lj=1L_j=1Rj=NR_j=N (1jQ)(1 \le j \le Q) 88
33 Q1000Q\le 1\,000 1212
44 Tj=2T_j=2 (1jQ)(1 \le j\le Q) 2323
55 对于每个满足 Tj=2T_j=2jj (1jQ)(1\le j\le Q),满足 Lj=1L_j=1Rj=NR_j=N 3535
66 无附加限制 1717