有关Polya定理的牛顿迭代:LOJ6538 烷基计数 加强版 加强版

本文探讨了如何使用牛顿迭代法解决涉及Polya计数定理生成函数的问题,特别是在处理形如A(z)的方程时,通过将高次项视为已知项简化迭代过程。

似乎论文哥觉得这没有必要专门写个题解来提示?那我来吧(

在一类用到 Polya 计数定理的生成函数求解时,我们会遇到一些带入了 A ( z k ) A(z^k) A(zk) 这样的式子,就比如这题可以列出这个方程:

A ( z ) = 1 + z A ( z ) 3 + 3 A ( z 2 ) A ( z ) + 2 A ( z 3 ) 6 A(z)=1+z\frac{A(z)^3+3A(z^2)A(z)+2A(z^3)}6 A(z)=1+z6A(z)3+3A(z2)A(z)+2A(z3)

当然分治 NTT 肯定是可以做的,那么可不可以牛顿迭代呢?

当然是可以的,说起来其实也很简单,当我们要从 ( m o d z n ) \pmod {z^n} (modzn) 的解扩展到 ( m o d z 2 n ) \pmod {z^{2n}} (modz2n) 的时候,在这个方程里 z A ( z 2 ) zA(z^2) zA(z2) 等等的系数其实已经都求出来了,所以把它当成一个常量就行了……总之写成 B = A ( z 2 ) , C = A ( z 3 ) B=A(z^2),C=A(z^3) B=A(z2),C=A(z3),这样是不是顺眼多了:

A ( z ) = 1 + z A 3 + 3 B A + 2 C 6 A(z)=1+z\frac{A^3+3BA+2C}6 A(z)=1+z6A3+3BA+2C

正常的牛顿迭代就可以了。代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值