题意
对于两棵树 T 1 , T 2 T_1,T_2 T1,T2 (编号都是 1 ∼ n 1\sim n 1∼n),我们给每个点染一个 [ 1 , y ] [1,y] [1,y] 之间的一个整数,如果两个点 p , q p,q p,q 之间的路径序列在两棵树上都一样,那么它们必须被赋予相同颜色。不妨设其为 w ( T 1 , T 2 ) w(T_1,T_2) w(T1,T2)。
问题 0:给定 T 1 , T 2 T_1,T_2 T1,T2,求 w ( T 1 , T 2 ) w(T_1,T_2) w(T1,T2)。
问题 1:给定 T 1 T_1 T1,求 ∑ T 2 w ( T 1 , T 2 ) \sum_{T_2} w(T_1,T_2) ∑T2w(T1,T2)。
问题 2:求 ∑ T 1 , T 2 w ( T 1 , T 2 ) \sum_{T_1,T_2} w(T_1,T_2) ∑T1,T2w(T1,T2)。
答案对 998244353 998244353 998244353 取模。
数据范围: 3 ≤ n ≤ 1 0 5 , 1 ≤ y < 998244353 3\le n\le 10^5, 1\le y<998244353 3≤n≤105,1≤y<998244353。
问题 0
稍微看看就可以发现问题等价于
y
n
−
∣
E
1
∩
E
2
∣
y^{n-|E_1\cap E_2|}
yn−∣E1∩E2∣
其中
E
1
∩
E
2
E_1\cap E_2
E1∩E2 是边的交。
问题 1
y n ∑ T 2 y − ∣ E 1 ∩ E 2 ∣ = y n ∑ S y − ∣ S ∣ ∑ T 2 [ S = E 1 ∩ E 2 ] y^n \sum_{T_2} y^{-|E_1\cap E_2|}=y^n \sum_S y^{-|S|} \sum_{T_2} [S=E_1\cap E_2] ynT2∑y−∣E1∩E2∣=ynS∑y−∣S∣T2∑[S=E1∩E2]
令
F
(
S
)
=
∑
T
2
[
S
=
E
1
∩
E
2
]
F(S)=\sum_{T_2} [S=E_1\cap E_2]
F(S)=∑T2[S=E1∩E2],我们考虑作出
G
(
S
)
=
∑
T
2
[
S
⊆
E
2
]
G(S)=\sum_{T_2} [S\subseteq E_2]
G(S)=∑T2[S⊆E2],则
G
(
S
)
=
∑
S
⊆
T
F
(
T
)
G(S)=\sum_{S\subseteq T} F(T)
G(S)=S⊆T∑F(T)
使用容斥
[
1
]
^{[1]}
[1]得到
F
(
S
)
=
∑
S
⊆
T
(
−
1
)
∣
T
∣
−
∣
S
∣
G
(
T
)
F(S)=\sum_{S\subseteq T} (-1)^{|T|-|S|} G(T)
F(S)=S⊆T∑(−1)∣T∣−∣S∣G(T)
于是
y
n
∑
S
⊆
T
1
y
−
∣
S
∣
∑
S
⊆
T
(
−
1
)
∣
T
∣
−
∣
S
∣
G
(
T
)
=
y
n
∑
T
⊆
T
1
(
−
1
)
∣
T
∣
G
(
T
)
∑
S
⊆
T
(
−
y
)
−
∣
S
∣
=
y
n
∑
T
⊆
T
1
(
−
1
)
∣
T
∣
G
(
T
)
∑
k
(
∣
T
∣
k
)
(
−
1
y
)
k
=
y
n
∑
T
⊆
T
1
(
1
y
−
1
)
∣
T
∣
G
(
T
)
y^n\sum_{S\subseteq T_1} y^{-|S|} \sum_{S\subseteq T} (-1)^{|T|-|S|} G(T) \\ = y^n \sum_{T\subseteq T_1} (-1)^{|T|} G(T) \sum_{S\subseteq T} (-y)^{-|S|} \\ = y^n \sum_{T\subseteq T_1} (-1)^{|T|} G(T) \sum_{k} \binom{|T|}{k} (-\frac{1}{y})^k \\ = y^n \sum_{T\subseteq T_1} (\frac{1}{y}-1)^{|T|} G(T)
ynS⊆T1∑y−∣S∣S⊆T∑(−1)∣T∣−∣S∣G(T)=ynT⊆T1∑(−1)∣T∣G(T)S⊆T∑(−y)−∣S∣=ynT⊆T1∑(−1)∣T∣G(T)k∑(k∣T∣)(−y1)k=ynT⊆T1∑(y1−1)∣T∣G(T)
一个基于 prufer 序的知名结论
[
2
]
^{[2]}
[2]给出
G
(
T
)
=
n
k
−
2
∏
i
=
1
k
a
i
G(T)=n^{k-2} \prod_{i=1}^k a_i
G(T)=nk−2i=1∏kai
于是原式化为
y
n
n
2
∑
T
⊆
T
1
(
1
y
−
1
)
∣
T
∣
∏
i
=
1
k
(
n
a
i
=
y
n
n
2
∑
T
⊆
T
1
(
1
y
−
1
)
n
−
k
∏
i
=
1
k
n
a
i
=
(
1
−
y
)
n
n
2
∑
T
⊆
T
1
∏
i
=
1
k
(
y
1
−
y
n
a
i
)
\frac{y^n}{n^2} \sum_{T\subseteq T_1} (\frac{1}{y}-1)^{|T|} \prod_{i=1}^k(na_i \\ = \frac{y^n}{n^2} \sum_{T\subseteq T_1} (\frac{1}{y}-1)^{n-k} \prod_{i=1}^k na_i \\ = \frac{(1-y)^n}{n^2} \sum_{T\subseteq T_1} \prod_{i=1}^k (\frac{y}{1-y}na_i) \\
n2ynT⊆T1∑(y1−1)∣T∣i=1∏k(nai=n2ynT⊆T1∑(y1−1)n−ki=1∏knai=n2(1−y)nT⊆T1∑i=1∏k(1−yynai)
我们使用树上背包来解决这个问题,设
d
p
(
u
,
i
)
dp(u,i)
dp(u,i) 表示考虑
u
u
u 的子树,
u
u
u 所在连通块大小为
i
i
i,不算上当前连通块的贡献,一开始
f
(
u
,
1
)
=
1
f(u,1)=1
f(u,1)=1,其余的都是 0,则每次转移:
d
p
(
u
,
i
)
←
f
(
u
,
i
)
∑
j
y
n
1
−
y
j
f
(
v
,
j
)
+
∑
j
f
(
v
,
j
)
f
(
u
,
i
−
j
)
dp(u,i)\leftarrow f(u,i)\sum_j \frac{yn}{1-y} j f(v,j)+\sum_j f(v,j)f(u,i-j)
dp(u,i)←f(u,i)j∑1−yynjf(v,j)+j∑f(v,j)f(u,i−j)
做出每个点的 dp 生成函数,那么
F
u
(
x
)
←
F
u
(
x
)
y
n
1
−
y
F
v
′
(
1
)
+
F
u
(
x
)
F
v
(
x
)
F_u(x)\leftarrow F_u(x) \frac{yn}{1-y} F_v'(1)+F_u(x)F_v(x)
Fu(x)←Fu(x)1−yynFv′(1)+Fu(x)Fv(x)
记录每个生成函数的开销太大,但我们考虑最后我们问的是
y
n
1
−
y
F
v
′
(
1
)
\frac{yn}{1-y}F_v'(1)
1−yynFv′(1),所以我们不妨考虑每个点上这个值的变化:
F
u
′
(
1
)
←
y
n
1
−
y
F
v
′
(
1
)
F
u
′
(
1
)
+
F
u
(
1
)
F
v
′
(
1
)
+
F
v
(
1
)
F
u
′
(
1
)
F_u'(1)\leftarrow \frac{yn}{1-y} F_v'(1)F_u'(1)+F_u(1)F_v'(1)+F_v(1)F_u'(1)
Fu′(1)←1−yynFv′(1)Fu′(1)+Fu(1)Fv′(1)+Fv(1)Fu′(1)
记录每个点的
F
u
(
1
)
,
F
u
′
(
1
)
F_u(1),F_u'(1)
Fu(1),Fu′(1),那么总体可以
O
(
n
)
O(n)
O(n) 树上 dp 将其求出。
问题 2
y n ∑ T 1 ∑ T ⊆ T 1 ( 1 y − 1 ) ∣ T ∣ G ( T ) = y n ∑ T ( 1 y − 1 ) ∣ T ∣ G ( T ) 2 = y n ∑ T ( 1 y − 1 ) ∣ T ∣ n 2 k − 4 ∏ i = 1 k a i 2 = ( 1 − y ) n n 4 ∑ T ∏ i = 1 k ( y 1 − y ) ( n a i ) 2 y^n \sum_{T_1} \sum_{T\subseteq T_1} (\frac{1}{y}-1)^{|T|} G(T) \\ =y^n \sum_T (\frac{1}{y}-1)^{|T|} G(T)^2 \\ = y^n \sum_T (\frac{1}{y}-1)^{|T|} n^{2k-4} \prod_{i=1}^k a_i^2 \\ = \frac{(1-y)^n}{n^4} \sum_T \prod_{i=1}^k (\frac{y}{1-y})(na_i)^2 ynT1∑T⊆T1∑(y1−1)∣T∣G(T)=ynT∑(y1−1)∣T∣G(T)2=ynT∑(y1−1)∣T∣n2k−4i=1∏kai2=n4(1−y)nT∑i=1∏k(1−yy)(nai)2
设一个
T
T
T 的生成函数
F
(
x
)
=
(
y
1
−
y
)
n
2
∑
i
≥
1
i
i
i
!
x
i
F(x)=(\frac{y}{1-y}) n^2 \sum_{i\ge 1} \frac{i^i}{i!} x^i
F(x)=(1−yy)n2i≥1∑i!iixi
则答案是
(
1
−
y
)
n
n
4
[
x
n
]
n
!
exp
F
(
x
)
\frac{(1-y)^n}{n^4} [x^n] n! \exp F(x)
n4(1−y)n[xn]n!expF(x)
一遍 exp 即可求出,复杂度
O
(
n
log
n
)
O(n\log n)
O(nlogn)。
注释
[1] 容斥
结论
已知全集 Ω \Omega Ω,若对所有子集 S S S 都有
G ( S ) = ∑ S ⊆ T ⊆ Ω F ( T ) G(S)=\sum_{S\subseteq T\subseteq \Omega} F(T) G(S)=S⊆T⊆Ω∑F(T)
则对所有子集 T T T 都有
F ( S ) = ∑ S ⊆ T ⊆ Ω ( − 1 ) ∣ T ∣ − ∣ S ∣ G ( T ) F(S)=\sum_{S\subseteq T\subseteq \Omega} (-1)^{|T|-|S|} G(T) F(S)=S⊆T⊆Ω∑(−1)∣T∣−∣S∣G(T)
证明
∑ S ⊆ T ⊆ Ω ( − 1 ) ∣ T ∣ − ∣ S ∣ G ( T ) = ∑ S ⊆ K ⊆ Ω F ( K ) ∑ S ⊆ T ⊆ K ( − 1 ) ∣ T ∣ − ∣ S ∣ = ∑ S ⊆ K ⊆ Ω F ( K ) ∑ k ≥ 0 ( ∣ K ∣ − ∣ S ∣ k ) ( − 1 ) k = ∑ S ⊆ K ⊆ Ω F ( K ) [ K = S ] = F ( S ) \sum_{S\subseteq T\subseteq \Omega} (-1)^{|T|-|S|}G(T) =\sum_{S\subseteq K\subseteq \Omega} F(K) \sum_{S\subseteq T\subseteq K} (-1)^{|T|-|S|} \\ = \sum_{S\subseteq K\subseteq \Omega} F(K) \sum_{k\ge 0} \binom{|K|-|S|}{k} (-1)^k=\sum_{S\subseteq K\subseteq \Omega} F(K)[K=S] \\=F(S) S⊆T⊆Ω∑(−1)∣T∣−∣S∣G(T)=S⊆K⊆Ω∑F(K)S⊆T⊆K∑(−1)∣T∣−∣S∣=S⊆K⊆Ω∑F(K)k≥0∑(k∣K∣−∣S∣)(−1)k=S⊆K⊆Ω∑F(K)[K=S]=F(S)
[2] 知名结论
结论
点有标号,将有 k k k 个连通块(大小分别是 a 1 , a 2 , ⋯ , a k , ∑ a i = n a_1,a_2,\cdots,a_k,\sum a_i=n a1,a2,⋯,ak,∑ai=n)的森林连成一个树的方案数为
n k − 2 ∏ i = 1 k a i n^{k-2} \prod_{i=1}^k a_i nk−2i=1∏kai
证明
第一步转化:考虑一个大小为 k k k 的有标号树,设第 i i i 个点的度为 d i d_i di,让每个点代表原来的一个连通块,则这 d i d_i di 个度任意分配,所以每个这样的树都对答案贡献
∏ i = 1 k a i d i \prod_{i=1}^k a_i^{d_i} i=1∏kaidi
第二步转化:考虑 prufer 序与树一一对应,而数组是 prufer 序的充要条件是:大小为 k − 2 k-2 k−2,值域为 [ 1 , k ] [1,k] [1,k]。且我们知道 d i = c i + 1 d_i=c_i+1 di=ci+1, c i c_i ci 是 i i i 在 prufer 序中出现的次数。所以每个这样的 prufer 序都对答案贡献:
∏ i = 1 k a i c i + 1 \prod_{i=1}^k a_i^{c_i+1} i=1∏kaici+1
现在设出每个数的 EGF:
∑ j ≥ 0 a i j j ! x j = e a i x \sum_{j\ge 0} \frac{a_i^j}{j!} x^j = e^{a_ix} j≥0∑j!aijxj=eaix
那么答案是
( k − 2 ) ! ∏ i = 1 k a i [ x k − 2 ] ∏ i = 1 k e a i x = n k − 2 ∏ i = 1 k a i (k-2)! \prod_{i=1}^k a_i [x^{k-2}]\prod_{i=1}^k e^{a_ix}=n^{k-2} \prod_{i=1}^k a_i (k−2)!i=1∏kai[xk−2]i=1∏keaix=nk−2i=1∏kai