[2020-2021集训队作业]带加强和多项木

  • 题目链接

    loj#3398

  • 题目大意

    求有多少叶子数为 n 的树满足所有非叶节点的儿子数 xS

    T 组询问,S 预先给定,答案对 M 取模。

    1n1018,2max{s|sS},M50,1T100,1S

  • 前言

    stO EI Orz

  • 题解

    显然考虑生成函数,设答案的生成函数为 F(x) ,那么:

    F(x)=x+iSF(x)iF(x)iSF(x)i=x

    显然想到拉格朗日反演,构造函数 G(x)=xiSxi ,那么有:

    [xn]F(x)=1n[xn1](xG(x))n

    这并不能做,因为不保证 n 在模 M 意义下有逆。

    然后考虑 EI 在今年 WC2021 提出的另类拉格朗日反演,有:

    [xn]F(x)=[xn1]G(x)(xG(x))n+1

    这样我们就成功规避了除法,现在问题转化为求一个多项式的高阶幂的问题。

    接下来我们仅考虑模数是质数或质数次幂的情况,因为更一般的情况可以直接 CRT 求得。

    设该质数为 p

    先考虑模 p

    根据历年的一些经典题目,我们可以得到多项式高阶幂模质数的一个重要性质:

    F(x)pF(xp)(modp)

    证明即考虑多项式系数 (pa1,,am) ,其模 p 不为 0 当且仅当 a1=p ,此时值为 1 ,证毕。

    那么我们可以考虑设计一个算法,每次将规模 /p ,就可以解决这个问题。

    具体而言,考虑计算 [xm]A(x)B(x)n,令 m=pm1+rm,n=pn1+rn,然后我们进行一些推导:

    [xm]A(x)B(x)n[xpm1+rm]A(x)B(x)pn1+rn[xpm1+rm](A(x)B(x)rn)B(x)pn1(modp)

    A(x)B(x)rn=r=0p1xrCr(xp) ,那么:

    [xpm1+rm](A(x)B(x)rn)B(x)pn1[xpm1+rm]xrmCrm(xp)B(x)pn1[xpm1]Crm(xp)B(xp)n1[xm1]Crm(x)B(x)n1(modp)

    这样我们就可以递归了,预处理出所有 Br ,令 A,B 的项数为 k,那么复杂度是 O((kp)2+Tk2logpn)

    接下来考虑模 pu

    根据上方的讨论,我们自然希望多项式高阶幂模 pu 也有类似性质。

    事实上对 pu (uZ+) ,我们都有:

    F(x)puF(xp)pu1(modpu)

    考虑归纳证明,u=1 由上可知成立,对于 u>1 ,设 F(x)pu=F(xp)pu1+puG(x) ,那么:

    F(x)pu+1=(F(xp)pu1+puG(x))p=i=0p(pi)F(xp)ipu1p(pi)uG(x)piF(xp)pu(modpu+1)

    最后一步转化与上面类似,那么即得原命题成立。

    这样我们令 A0(x)=A(x)B(x)nmodpu1,B0(x)=B(x)pu1,n=[n/pu1] ,就可以直接套用原来的方法计算了,复杂度 O((puk)2+T(pu1k)2logpn)

posted @   leukocyte  阅读(718)  评论(4编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示