CF2226G Stop Spot

题目描述

给定一个长度为 $n$ 的数组 $a$($1 \leq a_i \leq m$)。 考虑数组 $[1, 2, \ldots, m]$ 的所有 $m!$ 种排列。对于每个排列 $p$,定义数组 $b_p$ 为将数组 $a$ 和排列 $p$ 首尾相连得到的新数组。即,$b_p = [a_1, a_2, \ldots, a_n, p_1, p_2, \ldots, p_m]$。 令 $f(i)$ 表示有多少个排列 $p$,使得数组 $b_p$ 恰好包含 $i$ 个偶数长度回文子数组。 你的任务是计算 $$ \sum_{i=0}^{10^{100}} f(i)^{i+1} $$ 的值。 由于答案可能很大,输出对 $998\,244\,353$ 取模后的结果。 注:如果一个数组 $[c_1, c_2, \ldots, c_k]$ 满足 $c_i = c_{k+1-i}$ 对所有 $1 \le i \le k$ 成立,那么它是回文数组。

输入格式

每个测试点包含多个测试用例。第一行包含测试用例数量 $t$($1 \le t \le 10^5$)。 接下来每个测试用例,第一行包含两个整数 $n$ 和 $m$($1 \le m \le n \le 10^6$)。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le m$),表示数组 $a$ 的元素。 保证所有测试用例的 $n$ 之和不超过 $10^6$。

输出格式

每个测试用例输出一行一个整数,表示 $\sum_{i=0}^{10^{100}} f(i)^{i+1}$ 对 $998\,244\,353$ 取模后的结果。

说明/提示

在第一个测试用例中,$n=4$,$m=3$,$a=[3,1,2,1]$。 我们列出所有排列并计算偶数长度回文子数组的数量: - $p_1 = [1, 2, 3]$,$b_{p_1} = [3, 1, 2, 1, 1, 2, 3]$,偶数长度回文子数组的个数为 $2$。 - $p_2 = [1, 3, 2]$,$b_{p_2} = [3, 1, 2, 1, 1, 3, 2]$,偶数长度回文子数组的个数为 $1$。 - $p_3 = [2, 1, 3]$,$b_{p_3} = [3, 1, 2, 1, 2, 1, 3]$,偶数长度回文子数组的个数为 $0$。 - $p_4 = [2, 3, 1]$,$b_{p_4} = [3, 1, 2, 1, 2, 3, 1]$,偶数长度回文子数组的个数为 $0$。 - $p_5 = [3, 1, 2]$,$b_{p_5} = [3, 1, 2, 1, 3, 1, 2]$,偶数长度回文子数组的个数为 $0$。 - $p_6 = [3, 2, 1]$,$b_{p_6} = [3, 1, 2, 1, 3, 2, 1]$,偶数长度回文子数组的个数为 $0$。 因此,$f(0)=4$,$f(1)=1$,$f(2)=1$,其余 $f(i)=0$。所以答案为 $4^1+1^2+1^3=6$。 由 ChatGPT 5 翻译