AT_arc223_f [ARC223F] Zonal Score Maximization

题目描述

定义长度至少为 $2$ 的正整数序列的得分为其最大值与最小值之和。 对于长度至少为 $2$ 的正整数序列 $A$,令 $f(A)$ 为将 $A$ 划分为一个或多个连续子序列,且每个子序列长度至少为 $2$ 时,所有子序列得分总和的最大可能值。 形式化地,对于任意 $K$,若 $A$ 可以被划分为 $K$ 个长度均至少为 $2$ 的正整数序列 $B_1, B_2, \dots, B_K$,且它们按顺序拼接后恰好等于序列 $A$,$f(A)$ 被定义为 $\sum_{k=1}^{K}\left(\max(B_k)+\min(B_k)\right)$ 的最大可能值。 给定一个长度为 $N$ 的整数序列 $Q$,其中每个元素要么是 $1$ 到 $N$ 之间的整数,要么是 $-1$;再给定一个正整数 $X$。 求满足以下所有条件的排列 $P=(P_1,P_2,\dots,P_N)$(它是 $(1,2,\dots,N)$ 的一个排列)的总数,对 $998244353$ 取模。 - 对于 $i=1,2,\dots,N$,若 $Q_i \neq -1$,则 $P_i=Q_i$。 - $f(P)=X$。 每个输入包含 $T$ 组测试数据。

输入格式

输入从标准输入按以下格式给出: > $T$ > $\mathrm{case}_1$ > $\mathrm{case}_2$ > $\vdots$ > $\mathrm{case}_T$ 每组测试数据 $\mathrm{case}_t$ 按以下格式给出: > $N$ $X$ > > $Q_1$ $Q_2$ $\dots$ $Q_N$

输出格式

共输出 $T$ 行,第 $t$ 行包含第 $t$ 组测试数据的答案。

说明/提示

对于第一组测试数据,满足第一个条件的排列 $P$ 有以下两个:$(2,1,3)$ 和 $(2,3,1)$。 这两种情况下,将 $P$ 划分为长度至少为 $2$ 的连续子序列的唯一方式就是将 $P$ 整体作为一个连续子序列。此时得分为 $3+1=4$,因此 $f(P)=4$。 对于第二组测试数据,将 $P=(1,3,4,2)$ 划分为 $(1,3)$ 和 $(4,2)$,总得分为 $10$,且无法超过该值,所以 $f(P)=10$。 - $1 \leq T \leq 10^5$ - $2 \leq N \leq 10^5$ - $1 \leq X \leq 10^{18}$ - $Q_i=-1$ 或 $1 \leq Q_i \leq N$ - 若 $Q_i \neq -1$ 且 $Q_j \neq -1$,则 $Q_i \neq Q_j\;(i \neq j)$。 - 所有测试数据的 $N$ 之和不超过 $10^5$。 - 所有输入值均为整数。