【LibreOJ 6269&6269&6538 烷基计数 加强版 加强版】【生成函数+牛顿迭代】

博客介绍了如何计算不同碳原子数的烷基同分异构体数目,从简单的O(n^3)解决方案到优化的O(n^2)和O(n log n)方法。通过生成函数和牛顿迭代法解决加强版问题,适用于大限制的n值。
摘要由CSDN通过智能技术生成

题意

n n n个碳原子的烷基的同分异构体数目。

简单版

n ≤ 500 n\le500 n500
要求的是每个点的度数不大于 4 4 4且根节点的度数不大于 3 3 3的无标号有根树数量。
f i f_i fi表示有 i i i个碳原子的烷基数目,枚举两个子树的大小算贡献即可。
时间复杂度 O ( n 3 ) O(n^3) O(n3)

加强版

n ≤ 5000 n\le5000 n5000
f k , i , j f_{k,i,j} fk,i,j表示有 i i i个碳原子,且根的度数为 j j j且最大子树大小不超过 k k k的烷基数量。
转移的时候枚举当前的树有多少棵大小为 k k k的子树。
不难发现第一维可以省略。
时间复杂度 O ( n 2 ) O(n^2) O(n2)

加强版 加强版

n ≤ 100000 n\le100000 n100000
考虑求出Polya定理的生成函数。
这里的颜色数量相当于烷基个数,权重相当于烷基的点数。
置换群为 3 3 3的全排列即 S 3 S_3 S3,显然其循环节指标生成函数为 Z S 3 ( t 1 , t 2 , t 3 ) = t 1 3 + 3 t 1 t 2 + 2 t 3 6 Z_{S_3}(t_1,t_2,t_3)=\frac{t_1^3+3t_1t_2+2t_3}{6} ZS3(t1,t2,t3)=6t13+3t1t2+2t3
设答案的生成函数为 F ( x ) F(x) F(x),则 F ( x ) = 1 + x Z S 3 ( F ( x ) , F ( x 2 ) , F ( x 3 ) ) F(x)=1+xZ_{S_3}(F(x),F(x^2),F(x^3)) F(x)=1+xZS3(F(x),F(x2),

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值