#ABC330G. 逆序数平方和

逆序数平方和

逆序数平方和

题目描述

给定长度为 NN 的序列 A=(A1,…,AN)A = (A_1,\ldots,A_N)。AA 的每个元素要么是 −1-1,要么是 11 到 NN 之间的整数,并且 11 到 NN 的每个整数在 AA 中至多出现一次。

当且仅当满足 Ai≠−1⇒Pi=AiA_i \neq -1 \Rightarrow P_i = A_i 时,(1,…,N)(1,\ldots,N) 的排列 P=(P1,…,PN)P=(P_1,\ldots,P_N) 被称为好排列。求所有好排列的逆序数的平方和,并对 998244353998244353 取模。

排列 PP 的逆序数是指满足 1≤i<j≤N1\leq i \lt j \leq N 且 Pi>PjP_i \gt P_j 的整数对 (i,j)(i,j) 的个数。

输入格式

输入按以下格式从标准输入给出:

NN
A1A_1 …\ldots ANA_N

输出格式

输出答案。

样例

4
3 -1 2 -1
29

共有两个好排列: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。

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 或 1≤Ai≤N1\leq A_i \leq N
  • 11 到 NN 的每个整数在 AA 中至多出现一次
  • 所有输入值均为整数
难度 省选/NOI-
通过率 —
尝试 0
通过 0
ID
3136
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签