[PE690]Tom and Jerry and maze

题目

别问我 P E 690 \rm PE690 PE690 是什么意思,我也不知道。题目名呢?我自己取的。

题目描述
T o m Tom Tom J e r r y Jerry Jerry 在玩躲猫猫游戏。具体的,迷宫可以看成是 n n n 个点的无向图,每天早上 T o m Tom Tom 可以查看某个点,并且如果 J e r r y Jerry Jerry 碰巧在这个点上,那么 T o m Tom Tom 就赢了。每天晚上 J e r r y Jerry Jerry 必须走到相邻的一个点上。

求有多少种本质不同的简单无向图使得 J e r r y Jerry Jerry 无论采用什么策略(即,对于所有的移动路线), T o m Tom Tom 都可以在有限步内必胜。两个无向图本质不同当且仅当不能通过重标号使得它们完全相同。

数据范围与提示
n ≤ 1 0 5 n\le 10^5 n105 ,答案对 998244353 998244353 998244353 取模。提示:无论 J e r r y Jerry Jerry 是否知晓 T o m Tom Tom 的操作,答案都是那个数。

思路

如果图有环,必然抓不到 J e r r y Jerry Jerry 。直观上容易理解,不妨再给出一个数学的证明。对于第一天早上, T o m Tom Tom 的查看可以排除 J e r r y Jerry Jerry 在某个点的可能,但是第二天早上 J e r r y Jerry Jerry 仍然可能在任意一个点出现。

对于图是一个森林的情况,可以单独考虑每棵树。如果以某一个点为根时,有三个子树的大小超过 2 2 2,铁定凉凉。证明与上面的类似,对于这样一张图,
a 3 − a 2 − a 1 − y − b 1 − b 2 − b 3 ∣ c 1 ∣ c 2 ∣ c 3 a_3-a_2-a_1-y-b_1-b_2-b_3\\ |\\ c_1\\ |\\ c_2\\ |\\ c_3 a3a2a1yb1b2b3c1c2c3

不妨手玩一下各种选择。用 A i A_i Ai 集合表示,第 i i i J e r r y Jerry Jerry 移动后不可能在的地方。第一天,必须询问 a 2 , b 2 a_2,b_2 a2,b2 c 2 c_2 c2,否则起不到任何效果。不妨设询问了 a 2 a_2 a2
A 1 = { a 3 } A_1=\{a_3\} A1={a3}

此时去操作 b , c b,c b,c 的话,第一天的努力就白费了。必须操作 a 1 a_1 a1,乘胜追击!于是
A 2 = { a 2 } A_2=\{a_2\} A2={a2}

只有操作 y y y 是有意义的。故
A 3 = { a 3 , a 1 } A_3=\{a_3,a_1\} A3={a3,a1}

如果此时操作 a 2 a_2 a2 那么 A = { a 3 , a 2 } A=\{a_3,a_2\} A={a3,a2} 只需要两次不操作就会被蚕食干净。而 b b b c c c 要操作三次(同上方 a a a 的操作)才能与 a a a 碰面,那时候 a a a 早就火化了。所以只能选择询问 b 2 b_2 b2 c 2 c_2 c2 另辟蹊径。然而同样的,目前的 A 3 = { a 3 , a 1 } A_3=\{a_3,a_1\} A3={a3,a1} 只需要两步就凉凉了,如何等来救兵?

如果上面的条件不成立,考虑求出树的直径 a 1 − a 2 − ⋯ − b 2 − b 1 a_1-a_2-\cdots-b_2-b_1 a1a2b2b1(设其长度至少为 4 4 4)。显然 a 1 , b 1 a_1,b_1 a1,b1 度数均为 1 1 1,而 a 2 , b 2 a_2,b_2 a2,b2 只能连着叶子。其他的点,最多连接一些高度为 2 2 2 的子树。

不妨设 a 1 a_1 a1 为树根。将图黑白染色。此时 J e r r y Jerry Jerry 每天会从一种颜色的点走到另一种颜色的点。我们采用这种策略:当我们确信 J e r r y Jerry Jerry x x x 的子树中,且 J e r r y Jerry Jerry 所在点与 x x x 颜色相同时,将 x x x 号点与它的子节点(不包括直径上的下一个点)穿插询问,即依次询问 x , s o n 1 , x , s o n 2 , x , s o n 3 , … , x , s o n k x x,son_1,x,son_2,x,son_3,\dots,x,son_{k_x} x,son1,x,son2,x,son3,,x,sonkx

这样做的正确性是显然的。如果 J e r r y Jerry Jerry 藏在 s o n t son_t sont 代表的子树中,那么他没办法跑出去(查询 x x x 是恰到好处的封口)。而查询 s o n t son_t sont 时,根据节点颜色, J e r r y Jerry Jerry 只能在 s o n t son_t sont 处被抓住!如果 J e r r y Jerry Jerry 在更深的地方(顺着直径往下走),他也跑不出来,我们就可以递归向下查询了。

然而一开始我们不知道 J e r r y Jerry Jerry 所在节点的颜色。不要紧!我们假设 J e r r y Jerry Jerry 所在节点的颜色与根节点颜色相同,如果没抓住他,只有可能是 J e r r y Jerry Jerry 一开始所在节点的颜色不是根节点的颜色。那么我们可以推算出他现在所在节点的颜色,从头再来一遍,必定行。

如果树的直径长度为 3 3 3 呢?更简单——这就是个菊花图。直接询问中心两遍就行。如果树的直径为 2 2 2,整个树就只有这两个点……不过还是可以当成菊花图来处理。

讲了这么多,我们只知道了怎么判断一个给定图是否合法。虽说接下来也只剩一点点了。直接用 生成函数 推个数。对于中间的点,与它连接的子树高度不超过 2 2 2 ,可以看成整数拆分。所以生成函数 m i d mid mid
M ( x ) = ∑ i = 1 + ∞ p i − 1 x i M(x)=\sum_{i=1}^{+\infty}p_{i-1}x^{i} M(x)=i=1+pi1xi

其中 p i p_i pi 是将 i i i 拆分成无序的正整数的方案数。对于两边的点(设直径是 a 1 − a 2 − a 3 ⋯ − b 2 − b 1 a_1-a_2-a_3\cdots-b_2-b_1 a1a2a3b2b1),我们把 a 1 , a 2 a_1,a_2 a1,a2 都当做 a 3 a_3 a3 的子节点,那么 a 3 a_3 a3 就是一个树高恰好为 2 2 2 的情况。所以它的生成函数 e n d    p o i n t end\;point endpoint
E ( x ) = ∑ i = 1 + ∞ ( p i − 1 − 1 ) x i = M ( x ) − x 1 − x E(x)=\sum_{i=1}^{+\infty}(p_{i-1}-1)x^i=M(x)-\frac{x}{1-x} E(x)=i=1+(pi11)xi=M(x)1xx

即,减去了树高恰好为 1 1 1 的情况。直径长度不定,所有的 M M M 的卷积的生成函数
F ( x ) = ∑ i = 0 + ∞ M ( x ) i = 1 1 − M ( x ) F(x)=\sum_{i=0}^{+\infty}M(x)^i=\frac{1}{1-M(x)} F(x)=i=0+M(x)i=1M(x)1

那么两个 E E E 与一个 F F F 的卷积就是答案了……吗?还要考虑是否同构。显然同构只有一种情形,就是沿着链翻转。如果长度是偶数,那么确定一半就是方案数。如果长度是奇数,就要确定一半再乘一个中间点任选。所以答案的生成函数
B ( x ) = 1 2 [ E ( x ) 2 F ( x ) + E ( x 2 ) F ( x 2 ) ( M ( x ) + 1 ) ] B(x)=\frac{1}{2}\Big[E(x)^2F(x)+E(x^2)F(x^2)(M(x)+1)\Big] B(x)=21[E(x)2F(x)+E(x2)F(x2)(M(x)+1)]

可惜这是直径长度至少为 6 6 6 的情况。如果直径长度不超过 5 5 5,可以假想直径上一个点当根,高度不超过 2 2 2 嘛,直接用 M ( x ) M(x) M(x) 减去同构情况。直径为 5 5 5 4 4 4 不会同构,直径为 3 3 3 的选择中心与选择端点各计算了一次,需要减掉。不妨减去中心当根的情况,这是高度恰好为 1 1 1 且至少有两个儿子的情况,生成函数是 ∑ i = 3 + ∞ x i = x 3 1 − x \sum_{i=3}^{+\infty}x^i=\frac{x^3}{1-x} i=3+xi=1xx3 。直径为 2 2 2 的也多算了,这是仅有一条边的情况,生成函数是 x 2 x^2 x2

所以最终一棵树的生成函数
T ( x ) = B ( x ) + M ( x ) − x 3 1 − x − x 2 T(x)=B(x)+M(x)-\frac{x^3}{1-x}-x^2 T(x)=B(x)+M(x)1xx3x2

森林的生成函数是什么呢?不妨记 G ( x ) G(x) G(x) T ( x ) T(x) T(x) 的指数型生成函数,森林的指数型生成函数为 H ( x ) H(x) H(x),显然会有
H ( x ) = ∑ i = 0 + ∞ G ( x ) i i ! = e G ( x ) H(x)=\sum_{i=0}^{+\infty}\frac{G(x)^i}{i!}=e^{G(x)} H(x)=i=0+i!G(x)i=eG(x)

所以作一个 e x p exp exp 就好了。时间复杂度 O ( n log ⁡ n ) \mathcal O(n\log n) O(nlogn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值