[AGC051D] C4

发布时间 2023-09-08 17:35:24作者: Schucking_Sattin

[AGC051D] C4(2807)

Problem

有一张 \(4\) 个点 \(4\) 条边的简单无向连通图,点的编号分别为 \(1,2,3,4\) ,边分别连接着 $e1:(1,2),e2:(2,3),e3:(3,4),e4:(4,1) $。

给定 \(4\) 个数 \(v_1,v_2,v_3,v_4\) 求满足以下条件的路径数量:从 \(1\) 号点出发并到 \(1\) 号点结束,且经过第 \(i\) 条边 \(e_i\) 恰好 \(v_i\) 次。

你需要输出路径数对 \(998244353\) 取模的结果。\(v_1,v_2,v_3,v_4 \le 5 \times 10^5\)

Solution 1

省流:做不起。

官方题解的做法是 FFT 的 \(O(n\log{n})\)​​。

首先有一个阳间的结论:\(a, b, c, d\) 必须满足奇偶性相同才有可能存在的路径。

你把从 \(1\) 开始、到 \(1\) 结束看成一轮游走,则很自然地想到把游走分为两类:1.接过去;2.绕回来。

一类游走对每条边增量为奇数,二类游走对每条边增量为偶数。结论显然。

考虑路径由这些部分组成:1.正常地走;2.在一条边上反复横跳。

反复横跳之后的结果是:一条边的遍历次数 \(+2\),而你处在的位置并没有发生变化。

这启发我们,是不是可以先考虑正常地绕圈,然后再这个过程中插入反复横跳?

这个想法是好的,但不容易描述出一个实际的做法。

而官方做法刻画出了一个人类智慧的路径形式,将一轮游走继续划分成更小的 “二段式跳跃”:

  • \(1 \to 2 \to 3\)\(3 \to 2 \to 1\),称为一类跳跃。
  • \(1 \to 4 \to 3\)\(3 \to 4 \to 1\),称为二类跳跃。
  • \(1 \to 2 \to 1\)\(1 \to 4 \to 1\),称为三类跳跃。
  • \(3 \to 2 \to 3\)\(3 \to 4 \to 3\),称为四类跳跃。

三、四类跳跃即是上文提到的反复横跳。但是你注意到,我们只考虑了将 \(1, 3\) 作为起点的反复横跳,而对于 \(2, 4\) 作为起点的反复横跳 —— 即 \(2 \to 1 \to 2\)​ 这样的形式 —— 被包含在了一、二类跳跃之中 —— 一类更容易计算的跳跃之中。

这个思想对于事物的观察并不拘泥于事物的属性,而是如何寻求事物之间的和谐,构建一个奠基于事物而又超脱事物本身的整体。

是的,分散的反复横跳扰乱了一个简单的进程,而我们仍在思考一轮轮游走,看不透他们的存在。

当我们将混沌的游走肢解,一个不合理的刻画就此打破,而反复横跳被我们逐步包容。

我也曾在时间流速为一单位的四元环上反复横跳,可他们已经学会了用二单位的流速在其间穿梭。

我们可以重新去刻画一条完整的路径了。

首先确定一、二类跳跃。为方便叙述,我声称只有一、二类跳跃的路径是一条简单路径,而原路径被称为最终路径。

枚举一类跳跃走了 \(i\) 个,二类跳跃走了 \(j\) 个,将这 \(i + j\) 步跳跃进行排列,则每一步具体是什么跳跃是确定的,即一种排列情况唯一确定一个简单路径。不同的排列一定对应不同的简单路径,而经过三、四类跳跃的加入后,不同的排列也一定对应着不同的最终路径(因为三、四类跳跃前后,当前所处位置是不变的)。于是一、二类跳跃之间的定序带来 \(\binom{i + j}{i}\) 的乘积贡献。

确定三类跳跃:我们惊喜地发现,\(1 \to 2 \to 1\)\(1 \to 4 \to 1\) 的数量分别可以定下来,分别为:\(\frac{a - i}{2}\)\(\frac{d - j}{2}\)。还要考虑将三类跳跃与形如 \(1 \to \dots \to 1\) 的若干段路径之间进行定序(即 \(1\) 经过至少两个点后重新绕回 \(1\)),后者的数量为 \(\frac{i + j}{2}\)。所以将三类跳跃加入后,带来\(\binom{\frac{a - i}{2} + \frac{d - j}{2} + \frac{i + j}{2}}{\frac{a - i}{2} , \frac{d - j}{2} , \frac{i + j}{2}}\) 的乘积贡献。

同理去确定四类跳跃。\(3 \to 2 \to 3\) 的数量为 \(\frac{b - i}{2}\)\(3 \to 4 \to 3\) 的数量为 \(\frac{c - j}{2}\)。而由一、二类跳跃构成的形如 \(3 \to \dots \to 3\) 的路径段的数量为 \(\frac{i + j}{2} - 1\)(因为是从 \(1\) 出发的,到达 \(3\) 和回到 \(1\) 分别都要用掉一次一类或二类跳跃)。定序,带来 \(\binom{\frac{b - i}{2} + \frac{c - j}{2} + \frac{i + j}{2} - 1}{\frac{b- i}{2} , \frac{c - j}{2} , \frac{i + j}{2} - 1}\) 的乘积贡献。

然后整理答案。

\[\begin{aligned} ans &= \sum\limits_{i, j}\binom{i + j}{i}\binom{\frac{a - i}{2} + \frac{d - j}{2} + \frac{i + j}{2}}{\frac{a - i}{2} , \frac{d - j}{2} , \frac{i + j}{2}}\binom{\frac{b - i}{2} + \frac{c - j}{2} + \frac{i + j}{2} - 1}{\frac{b- i}{2} , \frac{c - j}{2} , \frac{i + j}{2} - 1} \\ &= \left( \frac{a + d}{2} \right)!\left( \frac{b + c}{2} - 1 \right)!\sum\limits_{i, j}\frac{(i + j)!}{\left( \frac{i + j}{2} \right)!\left( \frac{i + j}{2} - 1 \right)!}\times \frac{1}{i!\left( \frac{a - i}{2} \right)!\left( \frac{b - i}{2} \right)!} \times \frac{1}{j!\left( \frac{b - j}{2} \right)!\left( \frac{d - j}{2} \right)!} \end{aligned} \]

注意一些细节:这里的 \(i, j\) 二元组如果使得上式中任意一个分式结果不为整数,则该二元组没有意义,因为路径一定不合法。

你发现我已经把答案化成了卷积的形式,直接用 FFT 优化即可。没有意义的项系数赋为 \(0\) 即可。

code AGC051D - solution1