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


  • 题目链接

    loj#3398

  • 题目大意

    求有多少叶子数为 \(n\) 的树满足所有非叶节点的儿子数 \(x\in S\)

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

    \(1\le n\le 10^{18},2\le max\{s|s\in S\},M\le 50,1\le T\le 100,1\notin S\)

  • 前言

    \(\Huge{\text{stO EI Orz}}\)

  • 题解

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

    \[F(x)=x+\sum_{i\in S}F(x)^i\\ F(x)-\sum_{i\in S}F(x)^i=x \]

    显然想到拉格朗日反演,构造函数 \(G(x)=x-\sum_{i\in S}x^i\) ,那么有:

    \[[x^n]F(x)=\frac{1}{n}[x^{n-1}]\left(\frac{x}{G(x)}\right)^n \]

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

    然后考虑 \(\text{EI}\) 在今年 \(\text{WC2021}\) 提出的另类拉格朗日反演,有:

    \[[x^n]F(x)=[x^{n-1}]G'(x)\left(\frac{x}{G(x)}\right)^{n+1} \]

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

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

    设该质数为 \(p\)

    先考虑模 \(p\)

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

    \[F(x)^p\equiv F(x^p)\pmod p \]

    证明即考虑多项式系数 \(\binom{p}{a_1,\dots,a_m}\) ,其模 \(p\) 不为 \(0\) 当且仅当 \(a_1=p\) ,此时值为 \(1\) ,证毕。

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

    具体而言,考虑计算 \([x^m]A(x)B(x)^n\),令 \(m=pm_1+r_m,n=pn_1+r_n\),然后我们进行一些推导:

    \[\begin{aligned} &[x^m]A(x)B(x)^n\\ \equiv&[x^{pm_1+r_m}]A(x)B(x)^{pn_1+r_n}\\ \equiv&[x^{pm_1+r_m}](A(x)B(x)^{r_n})B(x)^{pn_1}\pmod p \end{aligned} \]

    \(A(x)B(x)^{r_n}=\sum_{r=0}^{p-1}x^rC_r(x^p)\) ,那么:

    \[\begin{aligned} &[x^{pm_1+r_m}](A(x)B(x)^{r_n})B(x)^{pn_1}\\ \equiv&[x^{pm_1+r_m}]x^{r_m}C_{r_m}(x^p)B(x)^{pn_1}\\ \equiv&[x^{pm_1}]C_{r_m}(x^p)B(x^p)^{n_1}\\ \equiv&[x^{m_1}]C_{r_m}(x)B(x)^{n_1}\pmod p \end{aligned} \]

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

    接下来考虑模 \(p^u\)

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

    事实上对 \(p^u\ (u\in \Z^+)\) ,我们都有:

    \[F(x)^{p^u}\equiv F(x^p)^{p^{u-1}}\pmod {p^u} \]

    考虑归纳证明,\(u=1\) 由上可知成立,对于 \(u> 1\) ,设 \(F(x)^{p^u}=F(x^p)^{p^{u-1}}+p^uG(x)\) ,那么:

    \[\begin{aligned} F(x)^{p^{u+1}}=&(F(x^p)^{p^{u-1}}+p^uG(x))^p\\ =&\sum_{i=0}^p\binom{p}{i}F(x^p)^{ip^{u-1}}p^{(p-i)u}G(x)^{p-i}\\ \equiv&F(x^p)^{p^u}\pmod {p^{u+1}} \end{aligned} \]

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

    这样我们令 \(A_0(x)=A(x)B(x)^{n\bmod p^{u-1}},B_0(x)=B(x)^{p^{u-1}},n'=[n/p^{u-1}]\) ,就可以直接套用原来的方法计算了,复杂度 \(\mathcal O((p^uk)^2+T(p^{u-1}k)^2\log_p n)\)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM