P14224 [ICPC 2024 Kunming I] 子数组

题目描述

给定长度为 $n$ 的整数序列 $a_1, a_2, \cdots, a_n$,称一个连续子数组 $a_l, a_{l + 1}, \cdots, a_r$ 是好的,若子数组里的最大元素在子数组里恰好出现了 $k$ 次。对每个 $1 \le k \le n$ 计算好的子数组的数量。

输入格式

有多组测试数据。第一行输入一个整数 $T$ 表示测试数据组数。对于每组测试数据: 第一行输入一个整数 $n$($1 \le n \le 4 \times 10^5$)表示序列的长度。 第二行输入 $n$ 个整数 $a_1, a_2, \cdots, a_n$($1 \le a_i \le 10^9$)表示序列。 保证所有数据 $n$ 之和不超过 $4 \times 10^5$。

输出格式

令 $c_i$ 表示 $k = i$ 时好的子数组的数量。为了减少输出的大小,每组数据只需要输出一行一个整数,表示 $\sum\limits_{i = 1}^n (i \times c_i^2)$ 对 $998244353$ 取模的结果。

说明/提示

令 $[l, r]$ 表示连续子数组 $a_l, a_{l + 1}, \cdots, a_r$。对于第一组样例数据: - $c_1 = 27$,$c_2 = 22$,$c_3 = 17$,而 $c_4, c_5, \cdots, c_{11}$ 均为 $0$。所以答案为 $(1 \times 27^2 + 2 \times 22^2 + 3 \times 17^2) \bmod 998244353 = 2564$。 - 当 $k = 1$ 时,一些好的子数组的例子有 $[3, 3]$(最大元素 $2$ 出现了一次),$[4, 5]$(最大元素 $2$ 出现了一次),以及 $[9, 10]$(最大元素 $3$ 出现了一次)。 - 当 $k = 2$ 时,一些好的子数组的例子有 $[1, 2]$(最大元素 $1$ 出现了两次),$[4, 6]$(最大元素 $2$ 出现了两次),以及 $[6, 9]$(最大元素 $3$ 出现了两次)。 - 当 $k = 3$ 时,一些好的子数组的例子有 $[3, 6]$(最大元素 $2$ 出现了三次),$[2, 6]$(最大元素 $2$ 出现了三次),以及 $[1, 11]$(最大元素 $3$ 出现了三次)。