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


    烷基计数

    题目链接: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)\)

  • 相关阅读:
    .NET 压缩解压库发布,支持进度查看
    WPF 蒙罩层 LoadingPage
    WPF如何用TreeView制作好友列表、播放列表
    WPF多线程UI更新——两种方法
    .NET责任链模式(混合单例模式,模板方法模式)-----制作与扩展能力验证
    .NET单例模式-------各种写法&&验证
    迭代器模式和组合模式混用
    正确理解DTO、值对象和POCO
    理解POCO
    VM
  • 原文地址:https://www.cnblogs.com/wlzhouzhuan/p/16323183.html
Copyright © 2020-2023  润新知