P5206 數樹 WC2019 Solution

spdarkle發表於2024-06-24

本題包含三個問題:

  • 問題 0:已知兩棵 \(n\) 個節點的樹的形態(兩棵樹的節點標號均為 \(1\)\(n\)),其中第一棵樹是紅樹,第二棵樹是藍樹。要給予每個節點一個 \([1, y]\) 中的整數,使得對於任意兩個節點 \(p, q\),如果存在一條路徑 \((a_1 = p, a_2, \cdots , a_m = q)\) 同時屬於這兩棵樹,則 \(p, q\) 必須被給予相同的數。求給予數的方案數。
    • 存在一條路徑同時屬於這兩棵樹的定義見「題目背景」。
  • 問題 1:已知藍樹,對於紅樹的所有 \(n^{n-2}\) 種選擇方案,求問題 0 的答案之和。
  • 問題 2:對於藍樹的所有 \(n^{n-2}\) 種選擇方案,求問題 1 的答案之和。

\(y=1\) 的情況:

  • \(opt=0:1\)
  • \(opt=1:n^{n-2}\)
  • \(opt=2:n^{2n-4}\)

不妨設邊集為 \(T_1,T_2\)

問題0:顯然也就是兩棵樹的公共邊保留,答案也就是 \(y^{n-c}\),其中 \(c\) 是公共邊條數。

問題1:

\(\sum_{T_2}y^{n-|T_1\cap T_2|}\)

\(g(T)=\sum_{T_2}[T\subseteq T_1\cap T_2]\),也即包含邊集 \(T\) 的樹個數,可以假定 \(T\)\(n-|T|\) 個連通塊構成,大小分別為 \(a_1\sim a_{n-|T|}\),則 \(g(T)=n^{n-|T|-2}\prod_{i=1}^{n-|T|}a_i\)

\[\begin{aligned} \sum_{T_2}y^{n-|T_1\cap T_2|}&=\sum_{T_2}\sum_{T\subseteq T_1\cap T_2}\sum_{S\subseteq T}(-1)^{|T|-|S|}y^{n-|S|}\text{(子集反演)}\\ &=\sum_{T}g(T)\sum_{S\subseteq T}y^{n-|S|}(-1)^{|T|-|S|}\\ &=\sum_{T}g(T)y^{n-|T|}\sum_{S\subseteq T}(-1)^{|T|-|S|}y^{|T|-|S|}\\ &=\sum_{T}g(T)y^{n-|T|}\sum_{S\subseteq T}(-y)^{|T|-|S|}\\ &=\sum_{T}g(T)y^{n-|T|}(1-y)^{|T|}\text{(二項式定理)}\\ &=\sum_{\sum_{i=1}^k a_i=n}n^{k-2}y^k(1-y)^{n-k}\prod_{i=1}^ka_i\text{(Purfer 序列)}\\ &=\frac{(1-y)^n}{n^2}\sum_{\sum_{i=1}^k a_i=n}\prod_{i=1}^k\frac{a_i·n·y}{1-y}\\ \end{aligned} \]

\(\sum_{\sum_{i=1}^k a_i=n}\prod_{i=1}^k\frac{a_i·n·y}{1-y}\) 可以由原樹進行樹形DP求得。

即:每個點點權為 \(\frac{ny}{1-y}\),要求將原樹劃分為若干個連通塊,劃分方案的權值定義為各個連通塊點權和之積,求所有劃分方案權值和。

定義 \(f_{i,0/1}\) 為子樹 \(i\) 當前連通塊是否已經選擇的權值和。

容易得到:

\(f_{u,0}\leftarrow f_{u,0}·f_{v,0}+f_{u,0}·f_{v,1}\)

\(f_{u,1}\leftarrow f_{u,1}·f_{v,0}+f_{u,1}·f_{v,1}+f_{u,0}·f_{v,1}\)

初始化 \(f_{u,0}=1,f_{u,1}=\frac{ny}{1-y}\)

問題2:現在連原樹也沒了。。。

其實上式也符合,因為兩棵樹都沒有,所以上式的 \(g(T)\) 改為 \(g^2(T)\) 即可。

\[\begin{aligned} \sum_{T_1,T_2}y^{n-|T_1\cap T_2|}&=\sum_{T_1,T_2}\sum_{T\subseteq T_1\cap T_2}\sum_{S\subseteq T}(-1)^{|T|-|S|}y^{n-|S|}\\ &=\sum_{T}g^2(T)\sum_{S\subseteq T}y^{n-|S|}(-1)^{|T|-|S|}\\ &=\sum_{T}g^2(T)y^{n-|T|}\sum_{S\subseteq T}(-1)^{|T|-|S|}y^{|T|-|S|}\\ &=\sum_{T}g^2(T)y^{n-|T|}\sum_{S\subseteq T}(-y)^{|T|-|S|}\\ &=\sum_{T}g^2(T)y^{n-|T|}(1-y)^{|T|}\\ &=\sum_{\sum_{i=1}^k a_i=n}n^{2k-4}y^k(1-y)^{n-k}\prod_{i=1}^ka^2_i\\ &=\frac{(1-y)^n}{n^4}\sum_{\sum_{i=1}^k a_i=n}\prod_{i=1}^k\frac{a^2_i·n^2·y}{1-y}\\ \end{aligned} \]

哦豁,現在就是後式求和怎麼玩了。。。

考慮每個連通塊,大小為 \(a_i\) 的樹有 \(a_i^{a_i-2}\),所以對於一組 \([a_1,a_2…a_k]\) 會有 \(\prod_{i=1}^ka_i^{a_i-2}\) 個不同局面。(有標號MSET構造)

所以所求:

\[\begin{aligned} \sum_{\sum_{i=1}^k a_i=n}\prod_{i=1}^k\frac{a^2_i·n^2·y}{1-y}&=[z^n]\exp(\sum_{i=0}\frac{i^in^2y}{i!})\\ &=[z^n]\sum_{k}\frac{1}{k!}\left(\sum_{i}\frac{i^in^2y}{i!}\right)^k \end{aligned} \]

所以答案為:

\[\frac{(1-y)^n}{n^4}[z^n]\exp\left(\sum_{k}\frac{k^kn^2y}{k!}\right) \]

相關文章