【LOJ6569】仙人掌计数

该博客介绍了如何通过指数型生成函数和牛顿迭代法解决有根仙人掌的圆方树计数问题。文章详细阐述了思路要点,包括子树大小的定义、生成函数的推导以及牛顿迭代的运用。最终,博主给出了O(NLogN)的时间复杂度解决方案,并提醒在计算总数时需要除以节点数N。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【题目链接】

【思路要点】

  • 考虑对有根仙人掌的圆方树计数,定义子树大小为子树内圆点的个数。
  • 令子树大小为 i i i 的圆点和方点各有 r i , s i r_i,s_i ri,si 个,则其指数型生成函数分别为
    R ( x ) = ∑ i = 1 r i i ! x i , S ( x ) = ∑ i = 1 s i i ! x i R(x)=\sum_{i=1}\frac{r_i}{i!}x^i,S(x)=\sum_{i=1}\frac{s_i}{i!}x^i R(x)=i=1i!rixi,S(x)=i=1i!sixi
  • 稍加推导可得
    R ( x ) = x e S ( x ) , S ( x ) = R ( x ) + R ( x ) 2 2 + R ( x ) 3 2 + ⋯ = R ( x ) + R ( x ) 2 2 − 2 R ( x ) R(x)=xe^{S(x)},S(x)=R(x)+\frac{R(x)^2}{2}+\frac{R(x)^3}{2}+\dots=R(x)+\frac{R(x)^2}{2-2R(x)} R(x)=xeS(x),S(x)=R(x)+2R(x)2+2R(x)3+=R(x)+22R(x)R(x)2
  • 因此有
    R ( x ) = x e R ( x ) + R ( x ) 2 2 − 2 R ( x ) R(x)=xe^{R(x)+\frac{R(x)^2}{2-2R(x)}} R(x)=xeR(x)+22R(x)R(x)2
    x e R ( x ) + R ( x ) 2 2 − 2 R ( x ) − R ( x ) = 0 xe^{R(x)+\frac{R(x)^2}{2-2R(x)}}-R(x)=0 xeR(x)+22R(x)R(x)2R(x)=0
  • G ( R ( x ) ) = x e R ( x ) + R ( x ) 2 2 − 2 R ( x ) − R ( x ) G(R(x))=xe^{R(x)+\frac{R(x)^2}{2-2R(x)}}-R(x) G(R(x))=xeR(x)+22R(x)R(x)2R(x) ,则 G ( R ( x ) ) = 0 G(R(x))=0 G(R(x))=0
  • 考虑牛顿迭代解上述方程,令
    R ( x ) ≡ R 0 ( x ) ( m o d   x n ) R(x)\equiv R_0(x)\quad(mod\ x^n) R(x)R0(x)(mod xn)
  • 则有 G ( R ( x ) ) ≡ G ( R 0 ( x ) ) + ( R ( x ) − R 0 ( x ) ) G ′ ( R 0 ( x ) ) ≡ 0 ( m o d   x 2 n ) G(R(x))\equiv G(R_0(x))+(R(x)-R_0(x))G'(R_0(x))\equiv0\quad(mod\ x^{2n}) G(R(x))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值