AT_arc188_d [ARC188D] Mirror and Order
题目大意
我们称两个长度为 \(n\) 的数组所构成的数组对 \((a, b)\) 是合法的当且仅当其能够满足以下构造:
- 构造 \(n\) 个长度为 \(3\) 且对应每一位上都不重复的使用了 \(1 \sim n\) 中的元素的数组 \(s_i\),我们令第 \(i\) 个数组 \(s_i\) 的逆序数组为 \(t_i\)。
- 需要满足 \(s_i \ne t_j, s_i \ne s_j, t_i \ne t_j\)。
- 此时将所有 \(s_i, t_i\) 按照字典序排序(以 \(1\) 为起始下标),满足恰好 \(a_i\) 为 \(s_i\) 在其中的排名,\(b_i\) 为 \(t_i\) 在其中的排名。
现在给你两个长度为 \(n\) 的数组 \(A, B\),固定了 \(a_i = A_i\),且对于 \(B_i \ne -1\) 的 \(i\),\(b_i = B_i\),你需要确定有多少对合法的 \((a, b)\) 满足如上条件,对 \(998244353\) 取模。
数据范围:\(1 \le n \le \color{red}{10^6}\)。
solution
显然这个构造还是太吃操作了,考虑快速解决 \(B_i \ne -1\) 的情况下的答案,也就是如何判定 \((a, b)\) 是合法的。
分析一下排序后的数组,那么开头显然就是形如 \(1, 1, 2, 2, 3, 3, ...\),每两个凑成一对,由于要满足 \(s_i \ne t_i\),所以 \(s_i\) 的开头和 \(t_i\) 的开头肯定不一样,因此 \(2i, 2i - 1\) 这两个数不可能同时存在于 \(a\) 或 \(b\) 中,这是必要条件。
利用第二位的数值来确定合法的充要条件(因为翻转后一样),倘若 \(2i - 1\) 在 \(a\) 中,\(2i\) 在 \(b\) 中,那么 \(2i - 1\) 出现的位置所对应的中间数一定小于 \(2i\) 出现位置所对应的中间数,反之同理。此时我们将大小关系建图,那么合法充要条件就是整张图无环。
但我们显然没有很牛的东西统计满足这个条件的图的数目,将图画出来推理一下会发现 \(a, b\) 都确定时图呈现为若干个对冲的环状物,那么我们将那些还没确定的关系给办掉,图的形态就是一些环状物加上一些链状物了。根据上述生成图的方式,得出此时剩下的边只需要满足图的最终形态便都是合法的,相当于说我要加一些边,使得目前没有环的方案数。
将每条边固定一个方向(固定其中 \(a\) 对应的那个点,看这条边指不指向这个点),那么无环相当于所有环状物的方向不能一致,这里初始需要判断一下。然后将若干条链组成环,使得满足这个条件,我们设边均为正方向的链数量为 \(c0\),边为负方向的链的数量为 \(c1\),都有的链的数量为 \(c2\),那么我们容斥这个化链为环的过程得到的答案是:
其中 \((-1)^{p + q}\) 是容斥系数,然后组合选出一些链,\(f_{i, j}\) 表示 \(i\) 条链拼成 \(j\) 个环的方案数,后面的阶乘是经典结论剩下的链拼成若干个环的方案数。
考虑将其分为 \(i, j\) 两部分计算,我们令 \(s_i = \sum_{j = 0}^i (-1)^j f_{i, j}\),然后式子会变成:
此时我们算出 \(s\) 便可以 \(O(n^2)\) 求出答案,\(s\) 可以随便 DP 一下,你可以选择前缀和优化。此时你已经可以完美通过原题,但是本题存在严格线性做法。
你若是打个表便会发现 \(f_i\) 在 \(i \ge 2\) 时全部为 \(0\),意味着通过 \(i\) 条链构成奇数个环和偶数个环方案数相同,具体来说可以构造双射,拼成若干个环你可以看成时生成一个排列,取其中的置换,那么交换这个排列的第一项和第二项必然会改变置换奇偶性(具体来说是 \(+1\),同时这也解释了上述我们算阶乘的贡献)。

浙公网安备 33010602011771号