loj#P578. 「LibreOJ NOI Round #2」小球进洞

    ID: 15282 传统题 4000ms 512MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>平衡树数据结构Link-Cut Tree线段树LibreOJ NOI Round

「LibreOJ NOI Round #2」小球进洞

题目描述

有若干个小球放在数轴上,第 ii 号小球的坐标参数为 aia_i

有两种操作:

  1. 输入 i,vi,v,修改第 ii 号小球的坐标参数为 aiva_i\gets v

  2. 输入 l,rl,r,询问下述内容:

    按照 aia_i 从小到大的顺序(aia_i 相等时按 ii 从小到大的顺序)依次将小球放在数轴上。第 ii 号小球放在 ai\le a_i 的没有被之前放置的小球占据的最大的整点处,设第 ii 号小球放置的位置为 bib_i

    请你输出 $\sum_{i=1,2,\dots , n,[l,r]\subseteq [b_i,a_i]} (a_i+b_i)$ 的值。也即,所有满足 bil,airb_i\le l,a_i\ge r 的小球的 ai+bia_i+b_i 之和。

输入格式

从标准输入读入数据。

第一行两个正整数 n,qn,q,分别表示小球个数和操作次数。

第二行 nn 个整数 a1,a2,,ana_1, a_2, \dots , a_n,用空格分隔,表示初始的坐标参数。

接下来 qq 行每行是下列两种之一:

  1. 1 i v\mathtt{1\ i\ v} 表示修改第 ii 个小球的坐标参数为 aiva_i\gets v

  2. 2 l r\mathtt{2\ l\ r} 表示询问 $\sum_{i=1,2,\dots , n,[l,r]\subseteq [b_i,a_i]} (a_i+b_i)$。

输出格式

输出到标准输出。

对于每种操作 2\mathtt{2},输出一行一个整数表示答案。

3 5
5 5 5
2 4 5
2 3 4
1 2 4
2 5 5
2 1 3
17
8
18
0
4 10
5 6 7 6
2 5 5
2 4 6
2 5 7
2 5 8
1 1 5
2 5 5
1 2 5
2 6 6
2 4 4
1 3 6
20
10
0
0
20
12
9

数据范围与提示

对于所有数据,$1\le n \le 10^5 ,1\le q\le 2\times 10^5 , n< a_i,v \le 2n , 1\le l \le r \le 2n$。

详细的数据限制及约定如下(留空表示和上述所有数据的约定相同):

子任务编号 分值 n,qn,q 特殊性质
1 1010 n,q1000n,q\leq 1000
2 1010 ai,vn+50a_i,v \le n+50
3 2020 没有操作 1\texttt{1}
4 3030 每次修改的 vai1\lvert v - a_i\rvert \le 1,即每次修改最多只会让 aia_i 改变 11
5 3030