烷基计数
题目链接:LOJ 6538 烷基计数 2×加强版。
对于 \(n=1\sim N\),求 \(n\) 个碳原子的烷基的同分异构体数,不考虑空间异构。
\(1\le N\le 10^5\)。
题解
根据有机化学知识,我们要求的就是有多少个 \(n\) 个点的无标号有根树,满足根的度数 \(\le 3\),其余点度数 \(\le 4\)。
令 \(F(x)\) 表示答案(其中 \(f_0=1\),表示空),问题在于直接 \(F(x)=xF^3(x)\) 会把同构的树多次计数。考虑利用 burnside 引理,设根的三个子树分别为 \(T_1,T_2,T_3\),有 \(3!=6\) 种置换群,因此可得:
用牛顿迭代求解即可,时间复杂度 \(\mathcal O(n\log n)\)。
烯烃计数
题目链接:洛谷 P6597 烯烃计数。
对于 \(n=1\sim N\),求 \(n\) 个碳原子的烯烃的同分异构体数,不考虑空间异构。
\(1\le N\le 10^5\)。
题解
考虑碳碳双键的这条“关建边”,相当于这条边左右两边分别做“烷基计数”,然后再合并起来。
因此,合并的部分再用一次 burnside 引理。令 \(G(x)\) 表示答案,则:
时间复杂度 \(\mathcal O(n\log n)\)。
烷烃计数
题目链接:洛谷 P6598 烷烃计数,LOJ 6512 「雅礼集训 2018 Day 8」C。
对于 \(n=1\sim N\),求 \(n\) 个碳原子的烷烃的同分异构体数,不考虑空间异构。
\(1\le N\le 10^5\)。
题解
根据有机化学知识,我们要求的就是有多少个 \(n\) 个点的无标号无根树,满足每个点度数 \(\le 4\)。
考虑拎起树的重心为根(在 \(n\) 为偶数时,可能无根树有两个重心,会算 \(2\) 次),用容斥的方法计算:总方案减去存在一个子树 \(\mathrm{size}> \frac{n}{2}\)。令前者为 \(G(x)\),则用 burnside 引理可得:
令答案为 \(H(x)\),枚举这个“大子树”的 \(\mathrm{size}\),则 \(h_n=g_n-\sum\limits_{i=\frac{n}{2}+1}^{n-1}f_if_{n-i}-[2|n]\binom{f_{n/2}}{2}\)。
容易卷积优化计算 \(H(x)\),时间复杂度 \(\mathcal O(n\log n)\)。