BZOJ 3625 多项式求逆+多项式开根
思路:
RT
//By SiriusRen
#include <bits/stdc++.h>
using namespace std;
const int N=<<,mod=;
int A[N],C[N],invC[N],c[N],d[N],R[N],tmp[N],xx,len,sqrA[N],F[N];
typedef long long ll;
int power(ll x,int y){
ll res=;
while(y){
if(y&)res=res*x%mod;
x=x*x%mod,y>>=;
}return res;
}
void NTT(int *a,int n,int f){
int m=,L=;
for(;m<n;m<<=)L++;
for(int i=;i<n;i++)R[i]=(R[i>>]>>)|((i&)<<(L-));
for(int i=;i<n;i++)if(i<R[i])swap(a[i],a[R[i]]);
for(int l=;l<n;l<<=){
int wn=power(,((mod-)/(l<<)*f+mod-)%(mod-));
for(int j=;j<n;j+=(l<<)){
int w=;
for(int k=;k<l;k++,w=1ll*w*wn%mod){
int x=a[j+k],y=1ll*a[j+k+l]*w%mod;
a[j+k]=(x+y)%mod,a[j+k+l]=(x-y+mod)%mod;
}
}
}
if(f==-){
int ni=power(n,mod-);
for(int i=;i<n;i++)a[i]=1ll*a[i]*ni%mod;
}
}
void get_inv(int *a,int *b,int n){
if(n==){b[]=power(a[],mod-);return;}
get_inv(a,b,n>>);
memcpy(tmp,a,sizeof(int)*n),memset(tmp+n,,sizeof(int)*n);
NTT(tmp,n<<,),NTT(b,n<<,);
for(int i=;i<n<<;i++)b[i]=(1ll*b[i]*(-1ll*b[i]*tmp[i]%mod)%mod+mod)%mod;
NTT(b,n<<,-),memset(b+n,,sizeof(int)*n);
}
void get_root(int *a,int *b,int n){
if(n==){b[]=;return;}
get_root(a,b,n>>),memset(d,,sizeof(int)**n);
get_inv(b,d,n);
memcpy(c,a,sizeof(int)*n),memset(c+n,,sizeof(int)*n);
NTT(c,n<<,),NTT(b,n<<,),NTT(d,n<<,);
for(int i=;i<n<<;i++)b[i]=(1ll*c[i]*d[i]%mod+b[i])%mod*%mod;
NTT(b,n<<,-),memset(b+n,,sizeof(int)*n);
}
signed main(){
int n,m;
scanf("%d%d",&n,&m);
for(len=;len<=m;len<<=);A[]=;
for(int i=;i<=n;i++)scanf("%d",&xx),C[xx]=,A[xx]=mod-;
get_root(A,sqrA,len),sqrA[]++,get_inv(sqrA,F,len);
for(int i=;i<=m;i++)printf("%d\n",(F[i]<<)%mod);
}
BZOJ 3625 多项式求逆+多项式开根的更多相关文章
- FFT模板 生成函数 原根 多项式求逆 多项式开根
FFT #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> ...
- bzoj 3625小朋友和二叉树 多项式求逆+多项式开根 好题
题目大意 给定n种权值 给定m \(F_i表示权值和为i的二叉树个数\) 求\(F_1,F_2...F_m\) 分析 安利博客 \(F_d=F_L*F_R*C_{mid},L+mid+R=d\) \( ...
- 【learning】多项式相关(求逆、开根、除法、取模)
(首先要%miskcoo,这位dalao写的博客(这里)实在是太强啦qwq大部分多项式相关的知识都是从这位dalao博客里面学的,下面这篇东西是自己对其博客学习后的一些总结和想法,大部分是按照其博客里 ...
- 【BZOJ3625】【codeforces438E】小朋友和二叉树 生成函数+多项式求逆+多项式开根
首先,我们构造一个函数$G(x)$,若存在$k∈C$,则$[x^k]G(x)=1$. 不妨设$F(x)$为最终答案的生成函数,则$[x^n]F(x)$即为权值为$n$的神犇二叉树个数. 不难推导出,$ ...
- [Codeforces438E][bzoj3625] 小朋友和二叉树 [多项式求逆+多项式开根]
题面 传送门 思路 首先,我们把这个输入的点的生成函数搞出来: $C=\sum_{i=0}^{lim}s_ix^i$ 其中$lim$为集合里面出现过的最大的数,$s_i$表示大小为$i$的数是否出现过 ...
- bzoj 3456 城市规划——分治FFT / 多项式求逆 / 多项式求ln
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3456 分治FFT: 设 dp[ i ] 表示 i 个点时连通的方案数. 考虑算补集:连通的方 ...
- NTT+多项式求逆+多项式开方(BZOJ3625)
定义多项式$h(x)$的每一项系数$h_i$,为i在c[1]~c[n]中的出现次数. 定义多项式$f(x)$的每一项系数$f_i$,为权值为i的方案数. 通过简单的分析我们可以发现:$f(x)=\fr ...
- 【BZOJ3456】轩辕朗的城市规划 无向连通图计数 CDQ分治 FFT 多项式求逆 多项式ln
题解 分治FFT 设\(f_i\)为\(i\)个点组成的无向图个数,\(g_i\)为\(i\)个点组成的无向连通图个数 经过简单的推导(枚举\(1\)所在的连通块大小),有: \[ f_i=2^{\f ...
- 2019.01.01 bzoj3625:小朋友和二叉树(生成函数+多项式求逆+多项式开方)
传送门 codeforces传送门codeforces传送门codeforces传送门 生成函数好题. 卡场差评至今未过 题意简述:nnn个点的二叉树,每个点的权值KaTeX parse error: ...
- P6295-有标号 DAG 计数【多项式求逆,多项式ln】
正题 题目链接:https://www.luogu.com.cn/problem/P6295 题目大意 求所有\(n\)个点的弱联通\(DAG\)数量. \(1\leq n\leq 10^5\) 解题 ...
随机推荐
- selenium的调用
selenium的调用 制作人:全心全意 selenium调用谷歌浏览器 chrome = webdriver.Chrome() //创建谷歌浏览器对象 url="http://www.ba ...
- BZOJ 4819 Luogu P3705 [SDOI2017]新生舞会 (最大费用最大流、二分、分数规划)
现在怎么做的题都这么水了.. 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4819 (luogu) https://ww ...
- UVa - 12450 - SpaceRecon Tournament
先上题目: Problem G: SpaceRecon Tournament SpaceRecon, the hottest game of 2011, is a real-time strategy ...
- JS中showModalDialog 详细使用方法
基本介绍: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog() 方法用来创建一个 ...
- 【BZOJ4398】福慧双修(二进制,最短路)
题意: 此题中S=1 思路:Orz ManGod秒切此题 我觉得出入边权互换不太直观,就改了一下写法 第一次默认与1有关的第一条出边只出不入,第二次默认只入不出 ..]of longint; head ...
- GIS服务器开发资源文档
JAVA开发gis后台服务可以参照此文学习,持续跟新... 几何基础类库 代表: JTS(Java), GEOS(C++), Shapely(Python) JTS封装了点.线等等对象 数据源实现 ...
- 网上的仿QQ验证码,详细使用方法
struts2的配置 和代码 1.生成图片流 类名:VerifyCodeUtils /** * 生成图片流 * @author Administrator * */ import java.awt.C ...
- Oracle怎么用(常用工具)
Oracle数据库管理系统装好了!那要怎么用呢? 将介绍的工具:①Database Configuration Assistant ②SQL Plus ③SQL Developer 一.Dat ...
- MyBatis3错误:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Priority的问题解决
在使用Maven新建QuitStart类型项目时,引入了MyBatis3.2.0版本的JAR包之后,出现如下错误: Exception in thread "main" java. ...
- lua中的metatable和metamethod
--元表和元方法给lua里的值设定一些操作,让我们可以对这些操作自定义 --创建一个新的table变量时,它是不存在元表的 --在Lua中,只能设置table的元表,其他类型的值的元表,只能通过C代码 ...