AT_abc452_g [ABC452G] 221 Substring
题目描述
对于一个正整数序列 $X = (X_1, \dots, X_n)$,当且仅当它的游程编码中的每一个(长度,数值)对,其长度等于数值时,称 $X$ 为 **221 序列**。更正式地,满足下述条件的序列称为 221 序列:
- 对于任意满足 $1 \leq l \leq r \leq n$ 的整数对 $(l, r)$,如果同时满足以下三个条件,则有 $(r-l+1) = X_l$:
- $l=1$,或者($l \geq 2$ 且 $X_{l-1} \neq X_l$)
- $r = n$,或者($r \leq n-1$ 且 $X_{r+1} \neq X_r$)
- $X_l = X_{l+1} = \dots = X_r$
例如,$(2,2,3,3,3,1,2,2)$ 是一个 221 序列,而 $(1,1)$ 和 $(4,4,1,4,4)$ 不是 221 序列。
给定一个长度为 $N$ 的正整数序列 $A = (A_1, \dots, A_N)$,求 $A$ 的非空**连续子序列**中,出现过的不同的 221 序列个数。
即使两个子序列取自不同的位置,只要它们完全相同,则只计为一次。
输入格式
从标准输入读入,格式如下:
> $N$ $A_1$ $A_2$ $\cdots$ $A_N$
输出格式
输出一行,表示答案。
说明/提示
### 样例解释 1
出现在 $A$ 的非空连续子序列中的 221 序列共有如下 $14$ 个:
- $(1)$
- $(1,2,2)$
- $(1,3,3,3)$
- $(1,3,3,3,1)$
- $(1,3,3,3,1,2,2)$
- $(1,4,4,4,4)$
- $(2,2)$
- $(2,2,1)$
- $(2,2,3,3,3)$
- $(2,2,3,3,3,1)$
- $(3,3,3)$
- $(3,3,3,1)$
- $(3,3,3,1,2,2)$
- $(4,4,4,4)$
### 样例解释 2
不存在出现在 $A$ 的非空连续子序列的 221 序列。
### 数据范围
- $1 \leq N \leq 500\,000$
- $1 \leq A_i \leq 9$
- 所有输入均为整数。
由 ChatGPT 5 翻译