#P12865. [JOI Open 2025] 冒泡排序机 / Bubble Sort Machine

    ID: 14690 远端评测题 2000ms 1024MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>树状数组2025排序可持久化线段树JOI(日本)

[JOI Open 2025] 冒泡排序机 / Bubble Sort Machine

背景

译自 JOI Open 2025 T1「Bubble Sort Machine」/ 「バブルソート機」。

题目描述

JOI 君——一名算法工程师,开发了冒泡排序机。

冒泡排序机操作长为 NN 的整数序列 a=(a1,a2,…,aN)a=(a_1,a_2,\ldots,a_N)。为了让机器能工作,给定 AiA_i 作为 aia_i(1≤i≤N1\le i\le N)的初值。每当机器上的按钮壹被按下时,机器会按照如下方式修改序列 aa:

对于 i=1,2,…,N−1i=1,2,\ldots,N-1(按此顺序),若 ai>ai+1a_i\gt a_{i+1},交换 ai,ai+1a_i,a_{i+1} 的值。

为了使冒泡排序机更博人眼球,JOI 君决定加入以下功能:

当按钮贰被按下时,给定整数 l,rl,r 作为输入(须满足 1≤l≤r≤N1\le l\le r\le N),机器会输出 al+al+1+⋯+ara_{l}+a_{l+1}+\cdots+a_r 的值。

给定整数序列的初值和冒泡排序机的操作序列,编程计算按钮贰的输出值。

输入格式

输入格式如下所示:

NN
A1A_1 A2A_2 ⋯\cdots ANA_N
QQ
(Query 1)(\text{Query }1)
(Query 2)(\text{Query }2)
⋮\vdots
(Query Q)(\text{Query }Q)

这里,QQ 指的是冒泡排序机的操作数。每个 (Query j)(\text{Query }j)(1≤j≤Q1\le j\le Q)由若干个空格分隔的数字组成。令 TjT_j 为 (Query j)(\text{Query }j) 的首个数字。这行的内容为以下二者之一:

  • 若 Tj=1T_j=1,这行再没有其他整数了。这意味着冒泡排序机的第 jj 次操作按下了按钮壹。
  • 若 Tj=2T_j=2,接下来还有两个整数,依次是 Lj,RjL_j,R_j。这意味着冒泡排序机的第 jj 次操作按下了按钮贰,给定的输入为 Lj,RjL_j,R_j。

输出格式

对每个按下按钮贰的操作[意思是,对每个满足 Tj=2T_j=2 的 jj(1≤j≤Q1\le j\le Q)],输出一行一个整数,表示冒泡排序机的输出。你的输出应与询问的顺序相符。

4
5 3 5 2
6
2 1 3
1
2 1 1
2 2 4
1
2 1 2
13
3
12
5
5
1 1 2 1 2
5
2 2 3
1
2 2 4
1
2 2 4
3
4
4

提示

样例解释

样例 11 解释

初值为 a1=5,a2=3,a3=5,a4=2a_1=5,a_2=3,a_3=5,a_4=2,a=(5,3,5,2)a=(5,3,5,2)。接下来在冒泡排序机上操作:

  1. 按下按钮贰,输入 l=1,r=3l=1,r=3。机器输出 a1+a2+a3=13a_1+a_2+a_3=13。
  2. 按下按钮壹。对 i=1,2,3i=1,2,3,按此顺序进行如下操作:
    • i=1i=1:由于 a1>a2a_1\gt a_2,交换二者的值,操作后 a=(3,5,5,2)a=(3,5,5,2)。
    • i=2i=2:由于并没有 a2>a3a_2\gt a_3,不操作 aa。
    • i=3i=3:由于 a3>a4a_3\gt a_4,交换二者的值,操作后 a=(3,5,2,5)a=(3,5,2,5)。
  3. 按下按钮贰,输入 l=1,r=1l=1,r=1。机器输出 a1=3a_1=3。
  4. 按下按钮贰,输入 l=2,r=4l=2,r=4。机器输出 a2+a3+a4=12a_2+a_3+a_4=12。
  5. 按下按钮壹。对 i=1,2,3i=1,2,3,按此顺序进行如下操作:
    • i=1i=1:由于并没有 a1>a2a_1\gt a_2,不操作 aa。
    • i=2i=2:由于 a2>a3a_2\gt a_3,交换二者的值,操作后 a=(3,2,5,5)a=(3,2,5,5)。
    • i=3i=3:由于并没有 a3>a4a_3\gt a_4,不操作 aa。
  6. 按下按钮贰,输入 l=1,r=2l=1,r=2。机器输出 a1+a2=5a_1+a_2=5。

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

样例 22 解释

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

数据范围

  • 2≤N≤500 0002\le N\le 500\, 000;
  • 1≤Ai≤109 (1≤i≤N)1\le A_i\le 10^9\, (1\le i\le N);
  • 1≤Q≤500 0001\le Q\le 500\, 000;
  • Tj∈{1,2} (1≤j≤Q)T_j\in \{1,2\}\, (1\le j\le Q);
  • 若 Tj=2T_j=2,有 1≤Lj≤Rj≤N (1≤j≤Q)1\le L_j\le R_j\le N\, (1\le j\le Q);
  • 输入的值都是整数。

子任务

  • Subtask 1 (5 pts)\text{Subtask 1 (5 pts)}:满足 Tj=1T_j=1 的 j (1≤j≤Q)j\,(1\le j\le Q) 至多有 1010 个;
  • Subtask 2 (11 pts)\text{Subtask 2 (11 pts)}:N,Q≤150 000N,Q\le 150\, 000,当 Tj=2T_j=2 时 Lj=Rj=1 (1≤j≤Q)L_j=R_j=1\, (1\le j\le Q);
  • Subtask 3 (15 pts)\text{Subtask 3 (15 pts)}:N,Q≤150 000N,Q\le 150\, 000,1≤Ai≤2 (1≤i≤N)1\le A_i\le 2\, (1\le i\le N);
  • Subtask 4 (23 pts)\text{Subtask 4 (23 pts)}:N,Q≤150 000N,Q\le 150\, 000,当 Tj=2T_j=2 时 Lj=Rj (1≤j≤Q)L_j=R_j\, (1\le j\le Q);
  • Subtask 5 (29 pts)\text{Subtask 5 (29 pts)}:N,Q≤150 000N,Q\le 150\, 000;
  • Subtask 6 (17 pts)\text{Subtask 6 (17 pts)}:无额外限制。