【bzoj3625】小朋友与二叉树

题意

我们的小朋友很喜欢计算机科学,而且尤其喜欢二叉树。

考虑一个含有n个互异正整数的序列c[1],c[2],...,c[n]。如果一棵带点权的有根二叉树满足其所有顶点的权值都在集合{c[1],c[2],...,c[n]}中,我们的小朋友就会将其称作神犇的。并且他认为,一棵带点权的树的权值,是其所有顶点权值的总和。

给出一个整数m,你能对于任意的s(1<=s<=m)计算出权值为s的神犇二叉树的个数吗?请参照样例以更好的理解什么样的两棵二叉树会被视为不同的。

我们只需要知道答案关于998244353(7172^23+1,一个质数)取模后的值。

\(1\leq n,m\leq 10^5\)

\(1\leq c[i]\leq 10^5\)

分析

真的是一道毒瘤题...

虽然很有意思。

我们对于数列\(c[1],c[2],...,c[n]\),设\(vis[i]=\sum_{j=1^n}[i=c[j]]\),即\(vis[i]\)表示\(c[j]=i\)的个数。

记\(vis[0],vis[1],vis[2],...,vis[n]\)生成函数为\(C=\sum_{i=0}^{infty}vis[i]x^i\)

设\(f[s]\)表示权值为\(s\)的神犇二叉树的个数。

则根据题意,我们要求\(f[0],f[1],...,f[n],...\)。

①奠基:当\(s=0\)时,\(f[s]=1\)

②转移:当\(s>0\)时,

\(f[s]=\sum_{i,j}c[i]*f[j]*f[s-i-j]\)

记\(f[0],f[1],...,f[n]\)的生成函数为\(F=\sum_{i=0}^{\infty}\)

我们只需要求出\(F\)即可。

把\(f\)的转移等式代入\(F\),则有

\(F=C*F*F+1\)

\(\therefore CF^2-F+1=0\)

根据求根公式,有\(F={1\pm \sqrt{1-4C}\over 2C}\)

对于下面的\(2C\),我们打算对\(F={1\pm \sqrt{1-4C}\over 2C}\)两边同时关于\(x^n\)取模,且只要等式两边小于\(x^n\),就可以直接等价。

这样的\(n\)是很容易找到的,使得:\(F={1\pm \sqrt{1-4C}\over 2C}\Leftrightarrow F\equiv {1\pm \sqrt{1-4C}\over 2C}(\mod x^n)\)

然后求\(2C\)的逆元即可把分母去掉。

首先要满足\(2C\)有逆元,而多项式有逆元的充要条件就是它的常数项有逆元。

而C的常数项为0,所以没有逆元。

所以分母的常数项必须也为零,才能把一个x消掉得到常数项。

因为$ \sqrt{1+4C}$的常数项为1,之前用1加上,所以必须为-号。

所以转化为:\(F\equiv {1-\sqrt{1-4C}\over 2C}\)

等式右边的分子分母同时乘上\(1+\sqrt{1-4C}\),得到:

\(F\equiv {4C\over 2C(1+\sqrt {1-4C})}={2\over 1+\sqrt{1+4C}}\)

现在需要解决两个问题即可:①多项式求逆 ②多项式开根

【多项式求逆】

一篇很好的讲解:http://blog.miskcoo.com/2015/05/polynomial-inverse

问题描述:已知\(A(x)\),求\(B(x)\),使得设\(A(x)B(x)\equiv 1(\mod x^n)\)

解决方案:

①当\(n=1\)时,设\(A(x)=c\),那么只有求出\(B(x)=inv(c)(\mod x^n)\)即可。

②当\(n>1\)时,设\(A(x)B'(x)\equiv 1(\mod x^{\lceil{n\over 2}\rceil})\),现在要求\(B(x)\)。

\(\because A(x)B(x)\equiv 1(\mod x^n)\)

\(\therefore A(x)B(x)\equiv 1(\mod x^{\lceil{n\over 2}\rceil})\)

\(\therefore B(x)-B'(x)\equiv 0(\mod x^{\lceil{n\over 2}\rceil})\)

\(\therefore B^2(x)-2BB'(x)+B'^2(x)\equiv 0(\mod x^n)\)

两边同时乘上\(A(x)\),\(\therefore B(x)-2B'(x)+AB'(x)\equiv 0(\mod x^n)\)

\(\therefore B(x)=2B'(x)-AB'^2(X)\)

复杂度分析:\(T(n)=T(n/2)+O(n\log n)=O(n\log n)\)

【多项式开根】

一篇很好的讲解:http://blog.csdn.net/wzq_qwq/article/details/48394749

问题描述:已知\(A(x)\),求\(H(x)\),使得\(H^2(x)\equiv A(x)(\mod x^n)\)

解决方案:

①当\(n=1\)时,直接求逆元

②当\(n>1\)时,设\(G(x)\),使得\(G^2(x)\equiv A(x)(\mod x^{\lceil{n\over 2}\rceil})\)

\(\therefore G^2(x)-A(x)\equiv 0(\mod x^{\lceil{n\over 2}\rceil})\)

\(\therefore (G^2(x)-A(x))^2\equiv 0(\mod x^n)\)

\(\therefore (G^2(x)+A(x))^2\equiv 4G^2(x)A(x)(\mod x^n)\)

\(\therefore ({G^2(x)+A(x)\over 2G(x)})^2=A(x)(\mod x^n)\)

\(\therefore H(x)\equiv {G(x)\over 2}+{A(x)\over 2G(x)}(\mod x^n)\)

【bzoj3625】【xsy1729】小朋友和二叉树的更多相关文章

  1. [BZOJ3625][CF438E]小朋友和二叉树

    题面 Description 我们的小朋友很喜欢计算机科学,而且尤其喜欢二叉树. 考虑一个含有\(n\)个互异正整数的序列\(c_1,c_2,\ldots,c_n\).如果一棵带点权的有根二叉树满足其 ...

  2. [BZOJ3625][CF438E]小朋友和二叉树 (多项式开根,求逆)

    题面 题解 设多项式的第a项为权值和为a的二叉树个数,多项式的第a项表示是否为真,即 则,所以F是三个多项式的卷积,其中包括自己: ,1是F的常数项,即. 我们发现这是一个一元二次方程,可以求出,因为 ...

  3. BZOJ3625 CF438E 小朋友与二叉树

    心态崩了 不放传送门了 辣鸡bz 还是正经一点写一下题解= = 就是显然我们可以把权值写成生成函数形式g(0/1序列)来表示权值是否出现 然后f来表示总的方案数 可以列出 分别枚举左右子树和空树的情况 ...

  4. 【BZOJ3625/CF438E】小朋友和二叉树(多项式求逆,多项式开方)

    [BZOJ3625/CF438E]小朋友和二叉树(多项式求逆,多项式开方) 题面 BZOJ CodeForces 大致题意: 对于每个数出现的次数对应的多项式\(A(x)\) 求\[f(x)=\fra ...

  5. BZOJ 3625: [Codeforces Round #250]小朋友和二叉树

    3625: [Codeforces Round #250]小朋友和二叉树 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 304  Solved: 13 ...

  6. 「BZOJ 3645」小朋友与二叉树

    「BZOJ 3645」小朋友与二叉树 解题思路 令 \(G(x)\) 为关于可选大小集合的生成函数,即 \[ G(x)=\sum[i\in c ] x^i \] 令 \(F(x)\) 第 \(n\) ...

  7. 【CF438E】小朋友和二叉树 解题报告

    [CF438E]小朋友和二叉树 Description ​ 我们的小朋友很喜欢计算机科学,而且尤其喜欢二叉树. ​ 考虑一个含有\(n\)个互异正整数的序列\(c_1,c_2,\dots,c_n\). ...

  8. [BZOJ 3625] [Codeforces 438E] 小朋友的二叉树 (DP+生成函数+多项式开根+多项式求逆)

    [BZOJ 3625] [Codeforces 438E] 小朋友的二叉树 (DP+生成函数+多项式开根+多项式求逆) 题面 一棵二叉树的所有点的点权都是给定的集合中的一个数. 让你求出1到m中所有权 ...

  9. 【BZOJ3625】【CF438E】小朋友和二叉树 NTT 生成函数 多项式开根 多项式求逆

    题目大意 考虑一个含有\(n\)个互异正整数的序列\(c_1,c_2,\ldots ,c_n\).如果一棵带点权的有根二叉树满足其所有顶点的权值都在集合\(\{c_1,c_2,\ldots ,c_n\ ...

随机推荐

  1. android 入门 006(sqlite增删改查)

    android 入门 006(sqlite增删改查) package cn.rfvip.feb_14_2_sqlite; import android.content.Context; import ...

  2. django cycle标签

    django 模板系统 有很多标签,其中cycle我觉得不好理解,至少网上文档也不好理解. 这些标签可以通过渲染模板文件而获得我们预期的效果和文字,常用的有如下这些标签: 标签:{% 标签名 %}{% ...

  3. CentOS 7.0安装配置LAMP服务器(Apache+PHP+MariaDB)

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止fir ...

  4. 高通安卓调试LCD几方面总结

    来公司上班现在已经整整一个月了,蔽人不才,能力有限,学习进度缓慢,不过也是有一点点的收获与心得,在这里写出来与大家分享,养成良好的记录习惯也免得后忘记. 不啰嗦了,开入正题.来公司一个月左右的时间,主 ...

  5. BZOJ 2561 最小生成树(最大流)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2561 题意:给定一个边带正权的连通无向图G= (V,E),其中N=|V|,M=|E|,N ...

  6. ios获取摄像头与相册图片

    iOS的一些设备上都安装了摄像头.现在绝大多数都有了. 在编程中,我们是用相应的东西来进行照相,录像等功能.   一.UIImagePickerController类 UIImagePickerCon ...

  7. js跨域及解决方案

    本文出自:http://www.cnblogs.com/oneword/archive/2012/12/03/2799443.html 1.什么是跨域 我们经常会在页面上使用ajax请求访问其他服务器 ...

  8. struts2--表单标签

    struts2的表单标签可分为两类:form标签本身和包装HTML表单元素的其他标签.form标签本身的行为不同于它内部的元素. struts2表单标签包括: form.textfield.passw ...

  9. [SAP ABAP开发技术总结]ABAP程序之间数据共享与传递

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  10. CA*Layer(CATransformLayer--CAGradientLayer)

    CATransformLayer CATransformLayer不同于普通的CALayer,因为它不能显示它自己的内容.只有当存在了一个能作用域子图层的变换它才真正存在.CATransformLay ...