https://atcoder.jp/contests/abc318/tasks/abc318_h
先转为概率, f i f_i fi 表示 i i i 个点两人都AC的概率, g i g_i gi 表示恰好一个人AC的概率。
两个人都AC,只能为全部自环, f i = 1 i ! f_i=\frac 1 {i!} fi=i!1
现在求 g n g_n gn。然后有个定理, n n n 个点形成的图形, n n n 所在的环的大小在 [ 1 , n ] [1,n] [1,n] 内随机生成。(很好证明)
然后考虑枚举 n n n 所在的环大小为 i i i,先考虑由 f f f 推向 g g g 的情况。剩下 n − i n-i n−i 个点两个人都AC,所以为 f n − i f_{n-i} fn−i。那么当前这个环只能有一个人AC,所以环大小至少为2。
此时谁AC都可以,所以最小的那条边有两个选择,即 2 i \frac 2 i i2。因此 f → g f\to g f→g 的答案为:
g n = ∑ i = 2 n 2 i f n − i n \Large g_n=\frac{\sum_{i=2}^n\frac 2 if_{n-i}}n gn=n∑i=2ni2fn−i
现在考虑 g → g g\to g g→g 的贡献。之后的贡献为 g n − i g_{n-i} gn−i。发现他已经保证了恰好一个人AC,而且已经确定了这个人是谁。那么当前这个环的选择唯一,但大小可以使1,因为即使两个人在这个环内同时AC也无所谓。
g n = ∑ i = 1 n 1 i g n − i n \Large g_n=\frac{\sum_{i=1}^n\frac 1 ig_{n-i}}n gn=n∑i=1ni1gn−i
结合起来就是:
g n = ∑ i = 1 n ( 2 i f n − i ( i ≠ 1 ) + 1 i g n − i ) n \Large g_n=\frac{\sum_{i=1}^n(\frac 2 if_{n-i}\small{(i\ne 1)}\Large+\frac 1 ig_{n-i})}n gn=n∑i=1n(i2fn−i(i=1)+i1gn−i)
令 a i = 2 i a_i=\frac 2 i ai=i2 且 a 1 = 0 a_1=0 a1=0, b i = 1 i b_i=\frac 1 i bi=i1
然后上面就变成了:
g n = ∑ i = 1 n ( a i f n − i + b i g n − i ) n \Large g_n=\frac{\sum_{i=1}^n(a_if_{n-i}+b_ig_{n-i})}n gn=n∑i=1n(aifn−i+bign−i)
前面NTT,后面是个分治NTT即可。