#P15582. [KTSC 2026] 平衡序列 / Balanced Sequence

[KTSC 2026] 平衡序列 / Balanced Sequence

题目描述

平衡序列的定义如下:

  • 长度为 11 的序列是平衡序列。
  • 2k+12k+1 的序列 S=[S0,,S2k]S=[S_0,\ldots,S_{2k}] 是平衡序列,当且仅当:
    • [S0,S1,,Sk1][S_0,S_1,\ldots,S_{k-1}] 是平衡序列;
    • [Sk+1,Sk+2,,S2k][S_{k+1},S_{k+2},\ldots,S_{2k}] 是平衡序列;
    • SkS_kSS唯一的最大元素。

给定长度为 NN 的序列 AA。定义 A[ij]=[Ai,Ai+1,,Aj]A[i\ldots j]=[A_i,A_{i+1},\ldots,A_j]。例如,若 A=[3,5,7,2,9]A=[3,5,7,2,9],则 A[13]=[5,7,2]A[1\ldots 3]=[5,7,2]A[44]=[9]A[4\ldots 4]=[9]

QQ 次操作,每次操作形如单点修改。操作是累积的。在初始状态和每次操作后,求出满足如下条件的 (i,j)(i,j) 对数:

  • 0ijN10\le i\le j\le N-1
  • A[ij]A[i\ldots j] 是平衡序列。

实现细节

这是一道函数式交互题。你不必,也不应实现 main 函数。

你应当实现以下的函数:

long long initialize(int N, vector<int> A)
  • NN:序列 AA 的长度。
  • AA:长度为 NN 的整数数组。
  • 返回初始状态下,满足 0ijN10\le i\le j\le N-1A[ij]A[i\ldots j] 为平衡序列的 (i,j)(i,j) 对数。
  • 该函数仅在运行之初被调用恰好一次。
long long update_sequence(int p, int v)
  • 该函数表示一次令 A[p]vA[p]\gets v 的操作。
  • 返回操作后,满足 0ijN10\le i\le j\le N-1A[ij]A[i\ldots j] 为平衡序列的 (i,j)(i,j) 对数。
  • 该函数在 initialize 函数调用后,被调用恰好 QQ 次。

你的源代码中不应调用任何输入/输出函数。

输入格式

示例评测程序的输入格式如下:

  • 11 行:NN QQ
  • 22 行:A[0]A[0] A[1]A[1] ... A[N1]A[N-1]
  • 对于所有 1kQ1 \le k \le Q
    • 2+k2 + k 行:pp vv(第 kkupdate_sequence 的参数)

输出格式

示例评测程序按以下格式输出答案:

  • 11 行:initialize 的返回值
  • 对于所有 1kQ1 \le k \le Q
    • 1+k1 + k 行:第 kkupdate_sequence 的返回值
4 0
1 1 1 1

4

12 0
8 9 7 9 2 3 2 8 4 6 2 6

18

7 2
1 3 4 4 2 1 6
3 1
3 2

7
9
8

提示

数据范围

  • 1N1051\le N\le 10^5
  • 0Q1050\le Q\le 10^5
  • 1A[i]1091\le A[i]\le 10^9
  • 0pN10\le p\le N-11v1091\le v\le 10^9

子任务

编号 得分 限制
11 33 Q=0Q=0AA 是平衡序列
22 55 Q=0Q=0A[i]3A[i]\le 3
33 1212 A[i]3,v3A[i]\le 3,v\le 3
44 1818 Q=0,N2000Q=0,N\le 2\, 000
55 2626 Q10Q\le 10
66 3636 无额外限制

样例 1

考虑 N=4N = 4, Q=0Q = 0, A=[1,1,1,1]A = [1, 1, 1, 1] 的情况。 评测程序调用以下函数:

initialize(4, [1, 1, 1, 1])

满足 A[ij]A[i \dots j] 是平衡序列的 (i,j)(i, j)(0,0),(1,1),(2,2),(3,3)(0, 0),(1, 1),(2, 2),(3, 3),因此它应该返回 44

样例 2

考虑 N=12N = 12, Q=0Q = 0, A=[8,9,7,9,2,3,2,8,4,6,2,6]A = [8, 9, 7, 9, 2, 3, 2, 8, 4, 6, 2, 6] 的情况。 评测程序调用以下函数:

initialize(12, [8, 9, 7, 9, 2, 3, 2, 8, 4, 6, 2, 6])

被调用的函数返回 1818

样例 3

考虑 N=7N = 7, Q=2Q = 2, A=[1,3,4,4,2,1,6]A = [1, 3, 4, 4, 2, 1, 6] 的情况。 评测程序按顺序调用以下函数:

initialize(7, [1, 3, 4, 4, 2, 1, 6])
update_sequence(3, 1)
update_sequence(3, 2)

被调用的函数分别返回 7,9,87, 9, 8