• 「多项式」烷基计数、烯烃计数、烷烃计数


    烷基计数

    题目链接: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\) 种置换群,因此可得:

    \[F(x)=x\frac{F^3(x)+3F(x)F(x^2)+2F(x^3)}{6} \]

    用牛顿迭代求解即可,时间复杂度 \(\mathcal O(n\log n)\)


    烯烃计数

    题目链接:洛谷 P6597 烯烃计数

    对于 \(n=1\sim N\),求 \(n\) 个碳原子的烯烃的同分异构体数,不考虑空间异构。

    \(1\le N\le 10^5\)

    题解

    考虑碳碳双键的这条“关建边”,相当于这条边左右两边分别做“烷基计数”,然后再合并起来。

    因此,合并的部分再用一次 burnside 引理。令 \(G(x)\) 表示答案,则:

    \[G(x)=\frac{(F(x)-1)^2+F(x^2)-1}{2} \]

    时间复杂度 \(\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 引理可得:

    \[G(x)=x\frac{F^4(x)+6F^2(x)F(x^2)+8F(x)F(x^3)+3F^2(x^2)+6F(x^4)}{24} \]

    令答案为 \(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)\)

  • 相关阅读:
    AFO
    【WC2016】鏖战表达式
    CF 构造
    noi2020 补题
    min_25筛
    退役公告
    arthas使用
    Python 分布式缓存之Reids数据类型操作详解
    python安装读取grib库总结(推荐)
    使用python修改文件并立即写回到原始位置操作(inplace读写)
  • 原文地址:https://www.cnblogs.com/wlzhouzhuan/p/16323183.html
Copyright © 2020-2023  润新知