树 题解

树 题解

题目链接

这题好像有不少有意思的卡常小技巧,顺便熟悉一下 burnside 引理

Burnside 引理

直接上 Burnside 可以发现,答案是 \(\frac{1}{n}=\sum_{i=0}^{n-1} w(i)\) 这里 \(w(i)\) 是指转 \(i\) 个数之后和自己等价的组合类个数

修改 \(w(i)\) 的定义为具有 \(d|i\) 长度的循环节的合法生成树个数,容易发现答案为 \(\frac{1}{n}=\sum_{i=0}^{n-1} w(\gcd(i,n))\)

也就是 \(\frac{1}{n}=\sum_i\sum_{d|n} w(d) [\gcd(i,n)=d]\) 交换枚举顺序,转而考虑对于每个 \(d\) 有多少个合法的 \(i\)

\(\frac{1}{n}\sum_{d|n} w(d) \sum_i [\gcd(i/d,n/d)=1]=\frac{1}{n}\sum_{d|n} w(d) \phi(\frac{n}{d})\)

以上都是显然的

考虑如何计算 \(w(d)\),发现就是轮子的生成树个数,这是简单的,有一个显然的 dp,写成矩阵形式有一个四阶的递推形式

简单消元之后发现其实没有那么长,只是 \(w_n=3w_{n-1}-w_{n-2}+2\)

这时候可以写成 \(3\times 3\) 的矩阵了,差分一下变成齐次的直接 bostan-mori 感觉就过了,但是考虑继续优化

\(f_n=w_n+k\)\(f_n=3f_{n-1}-f_{n-2}\),容易解得 \(k=2\),直接求 \(f\) 即可,矩阵大小是 \(2 \times 2\) 的,卡常即可通过此题

莫反

考虑最上面 Burnside 引理部分我们得出的式子,也就是 "显然" 的那一部分,直觉告诉我们这个结论可以由容斥导出,考虑暴力莫反而不使用 Burnside 引理

\(f(i)\) 为最小循环节长度为 \(i\) 的方案数,\(g(i)\) 为存在循环节长度为 \(i\) 的方案数

则有 \(g(i)=\sum_{d|i} f(d)\),莫反一下得到 \(f(i)=\sum_{d|i} g(d)\mu(\frac{i}{d})\)

答案是 \(\frac{1}{n} \sum_{i|n} f(i)\frac{n}{i}=\frac{1}{n} \sum\frac{n}{i} \sum_{d|i} g(d)\mu(\frac{i}{d})\)

交换求和顺序就能知道这是 \(\frac{1}{n}\sum_{d|n} g(d) \phi(\frac{n}{d})\)

容易发现这部分所说的 \(g\) 与上一部分中的 \(w\) 含义完全相同

posted @ 2025-02-25 14:07  wang54321  阅读(48)  评论(2)    收藏  举报