题目描述
给定一个仅由数字 0 和 1 构成的长度为 n 的数列 a1,a2,…,an(0≤ai≤1)。
你需要进行若干次如下操作:
- 每次操作会随机产生一组下标对 (i,j) 且满足 1≤i<j≤n(产生每组下标对的概率是相同的,这也就是说产生每组下标对 (i,j) 的概率均为 Cn21=n(n−1)2)
- 如果 ai>aj 则交换 ai 和 aj,否则不交换。
求:最终数列变为升序的期望次数?
很明显,最终的期望次数可以表示为两个互质的整数的比例,即 qp。输出 p⋅q−1 mod 998244353 的结果。换句话说,你需要输出一个整数 x,它满足 0≤x<998244353 且 x⋅q≡p mod 998244353。
输入格式
第一行,一个整数 n(1≤n≤2⋅105)。
第二行,n 个整数 a1,a2,…,an(0≤ai≤1)。
输出格式
输出一个整数,表示答案。
样例
3
0 1 0
3
5
0 0 1 1 1
0
6
1 1 1 0 0 1
249561107
说明/提示
样例解释
考虑第一个样例。如果选择下标对 (2,3),那么这些元素将被交换,数组将变得有序。否则,如果选择了下标对 (1,2) 或 (1,3) 中的一个,将不会发生任何变化。因此,数组在一次操作后变得有序的概率为31,在两次操作后变得有序的概率为32⋅31,在三次操作后变得有序的概率为32⋅32⋅31,依此类推。期望操作次数为i=1∑∞(32)i−1⋅31⋅i=3。
在第二个样例中,数组已经有序,因此期望操作次数为零。
在第三个样例中,期望操作次数等于475,因此答案是75⋅4−1≡249561107 mod 998244353。
数据规模与约定
- 对于 5% 的数据,n≤20
- 对于 30% 的数据,n≤2000
- 对于 100% 的数据,1≤n≤2⋅105