洛谷 P5564: [Celeste-B]Say Goodbye


題目傳送門:洛谷 P5564

題意簡述:

\(n\) 個點,染 \(m\) 種顏色,第 \(i\) 種顏色染恰好 \(cnt_i\) 個節點,滿足 \(cnt_1+cnt_2+\cdots+cnt_m=n\)

求這 \(n\) 個點組成的本質不同無標號+有序(子樹有序)基環(環長至少為 \(2\))樹個數。

兩棵基環樹本質相同當且僅當通過環的旋轉(不能翻轉)后能使得它們完全相同。

題解:

首先考慮只染一種顏色的 \(n\) 個點(\(n\ge1\))的無標號有根有序樹個數計數。
考慮這棵樹的括號序,發現其括號序是長度為 \(n\) 的合法括號串,但是必須滿足最外層括號(根節點)只有一對。
\(n\) 個點的有根有序樹個數為 \(n-1\) 對括號組成的合法括號串,即第 \(n-1\) 個卡特蘭數。
\(n\) 個點的有根有序樹個數為 \(t_n\),令其 OGF 為 \(\displaystyle T=\sum_{i=1}^{+\infty}t_ix^i\),即 \(T=xC\),其中 \(C\) 為卡特蘭數的 OGF。

再考慮染色的問題,不難發現只要有序,則染色和樹形態是相互獨立的。
即只要乘上一個多重組合數 \(\displaystyle\binom{n}{cnt_1,cnt_2,\ldots,cnt_m}\) 即可。


回到原問題,枚舉環長 \(k\),使用 Burnside 引理統計等價類個數。環的旋轉置換的統計方法是常見的,即枚舉因數 \(d\),等價於循環 \(d\) 格的置換個數為 \(\varphi\!\left(\dfrac{k}{d}\right)\)。則有:

\[\begin{aligned}\mathbf{Ans}&=\sum_{k=2}^{n}\dfrac{1}{k}\sum_{d|k}\varphi\!\left(\dfrac{k}{d}\right)\!\cdot f(d)\end{aligned} \]

其中 \(f(d)\) 表示循環 \(d\) 格時的不動點個數。

循環 \(d\) 格時,存在 \(d\) 個長度為 \(\dfrac{k}{d}\) 的循環,循環內的每個元素都代表一棵外向樹。為了方便進一步的展開,交換 \(d\)\(\dfrac{k}{d}\) 的意義,枚舉 \(d\) 為循環長度,而 \(\dfrac{k}{d}\) 為循環個數。此時每個循環內的樹形態相互獨立,而且染色和樹形態相互獨立,但每個循環的樹形態必須相同,且染色也必須相同,也就是說有 \(\dfrac{k}{d}\) 棵樹,且總點數為 \(\dfrac{n}{d}\),並且需要滿足每種顏色的個數是 \(d\) 的倍數,即 \(\left.d\:\middle|\:\gcd\limits_{i=1}^{m}cnt_i\right.\)。則公式變為:

\[\begin{aligned}\mathbf{Ans}&=\sum_{k=2}^{n}\dfrac{1}{k}\sum_{d|k}\varphi(d)\cdot f\!\left(\dfrac{k}{d}\right)\!\\&=\sum_{k=2}^{n}\dfrac{1}{k}\sum_{d|k}\varphi(d)\cdot\!\left\{\!\left[d\:\middle|\:\gcd\limits_{i=1}^{m}cnt_i\right]\!\cdot\!\left[x^{n/d}\right]\!T^{k/d}\cdot\binom{n/d}{cnt_1/d,cnt_2/d,\ldots,cnt_m/d}\right\}\!\end{aligned} \]

此時有兩條路可走,其一是留下生成函數 \(T\) 的形式不變,其二是考慮使用卡特蘭數的性質。

先使用第一種做法,考慮交換求和順序並改變求和指標 \(k\)\(kd\)

\[\begin{aligned}\mathbf{Ans}&=\sum_{k=2}^{n}\dfrac{1}{k}\sum_{d|k}\varphi(d)\cdot\!\left\{\!\left[d\:\middle|\:\gcd_{i=1}^{m}cnt_i\right]\!\cdot\!\left[x^{n/d}\right]\!T^{k/d}\cdot\binom{n/d}{cnt_1/d,cnt_2/d,\ldots,cnt_m/d}\right\}\!\\&=-t_n\binom{n}{cnt_{1\ldots m}}+\sum_{d\mid\gcd_{i=1}^{m}cnt_i}\varphi(d)\cdot\binom{n/d}{cnt_{1\ldots m}/d}\cdot\!\left[x^{n/d}\right]\!\sum_{k=1}^{n/d}\frac{T^k}{kd}\\&=-t_n\binom{n}{cnt_{1\ldots m}}+\sum_{d\mid\gcd_{i=1}^{m}cnt_i}\frac{\varphi(d)}{d}\cdot\binom{n/d}{cnt_{1\ldots m}/d}\cdot\!\left[x^{n/d}\right]\!\sum_{k=1}^{+\infty}\frac{T^k}{k}\\&=-t_n\binom{n}{cnt_{1\ldots m}}+\sum_{d\mid\gcd_{i=1}^{m}cnt_i}\frac{\varphi(d)}{d}\cdot\binom{n/d}{cnt_{1\ldots m}/d}\cdot\!\left[x^{n/d}\right]\!(-\ln(1-T))\end{aligned} \]

第二行的第一項是因為后面統計了 \(d=k=1\) 的情況,但是實際不需要,所以要減掉。
最后一行利用了 \(\ln\)\(1\) 處展開的的泰勒級數:\(\displaystyle\ln(1-x)=-\sum_{i=1}^{+\infty}\frac{x^i}{i}\)
先使用多項式對數函數計算出 \(-\ln(1-T)\),按照此式直接計算即可。時間復雜度 \(\mathcal{O}(n\log n+\sigma_0(n)\cdot m)\)


第二種做法是考慮卡特蘭數和自身的 \(m\) 次卷積的第 \(n\) 項的通項。

有公式 \(\displaystyle[x^n]C^m=\binom{2n+m-1}{n}-\binom{2n+m-1}{n-1}\),將此式代入可得:

\[\begin{aligned}\mathbf{Ans}&=\sum_{k=2}^{n}\dfrac{1}{k}\sum_{d|k}\varphi(d)\cdot\!\left\{\!\left[d\:\middle|\:\gcd\limits_{i=1}^{m}cnt_i\right]\!\cdot\!\left[x^{n/d}\right]\!T^{k/d}\cdot\binom{n/d}{cnt_1/d,cnt_2/d,\ldots,cnt_m/d}\right\}\!\\&=\sum_{k=2}^{n}\dfrac{1}{k}\sum_{d|k}\varphi(d)\cdot\!\left\{\!\left[d\:\middle|\:\gcd\limits_{i=1}^{m}cnt_i\right]\!\cdot\!\left(\binom{2n/d-k/d-1}{2n/d-2k/d}-\binom{2n/d-k/d-1}{2n/d-2k/d-1}\right)\!\cdot\binom{n/d}{cnt_{1\ldots m}/d}\right\}\!\\&=-t_n\binom{n}{cnt_{1\ldots m}}+\sum_{d\mid\gcd_{i=1}^{m}cnt_i}\frac{\varphi(d)}{d}\cdot\binom{n/d}{cnt_{1\ldots m}/d}\sum_{k=1}^{n/d}\frac{1}{k}\!\left(\binom{2n/d-k-1}{2n/d-2k}-\binom{2n/d-k-1}{2n/d-2k-1}\right)\!\end{aligned} \]

直接計算即可,復雜度 \(\mathcal{O}(\sigma_0(n)(n+m))\)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM