#4930. Inversion Squared

0

Inversion Squared

Inversion Squared

题目描述

你被给予一个长度为 NN 的序列 A=(A1,…,AN)A = (A_1,\ldots,A_N)。序列 AA 的每个元素要么为 −1-1,要么为介于 11 到 NN 之间的整数,并且每个从 11 到 NN 的整数在 AA 中最多出现一次。 一个排列 P=(P1,…,PN)P=(P_1,\ldots,P_N)(为 (1,…,N)(1,\ldots,N) 的一个排列)当且仅当满足 Ai≠−1⇒Pi=AiA_i \neq -1 \Rightarrow P_i = A_i 时称为 良好排列。求所有良好排列的逆序数平方和,对 998244353998244353 取模。 排列 PP 的逆序数是满足 1\leq i < j \leq N 且 P_i > P_j 的整数对 (i,j)(i,j) 的个数。

输入格式

输入按如下格式由标准输入给出: NN A1A_1 …\ldots ANA_N

输出格式

输出答案。

4
3 -1 2 -1
29
10
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1
952235647
15
-1 -1 10 -1 -1 -1 2 -1 -1 3 -1 -1 -1 -1 1
460544744

提示

1≤N≤30001\leq N\leq 3000 Ai=−1A_i = -1 or 1≤Ai≤N1\leq A_i \leq N。 每个从 11 到 NN 的整数在 AA 中最多出现一次。 所有输入值均为整数。存在两个良好排列:P=(3,1,2,4)P=(3,1,2,4) 和 P=(3,4,2,1)P=(3,4,2,1),其逆序数分别为 22 和 55。 因此,答案为 22+52=292^2 + 5^2 = 29.
对 998244353998244353 取模后输出结果。

标签: AtCoder|abc330G

来源

AtCoder|abc330G