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\) 解题 ...
随机推荐
- xfce 安装文泉驿字体
下载文泉驿字体 #拷贝字体到目录/usr/share/fonts/wqy#创建字体缓存 mkfontscale # 在当前目录下生成fonts.scale文件 mkfontdir # 在当前目录下生成 ...
- [河南省队2012] 找第k小的数
★★☆ 输入文件:kth.in 输出文件:kth.out 简单对比时间限制:1 s 内存限制:128 MB 题目描述 看到很短的题目会让人心情愉悦,所以给出一个长度为N的序列A1,A2 ...
- [bzoj3809]Gty的二逼妹子序列_莫队_分块
Gty的二逼妹子序列 bzoj-3809 题目大意:给定一个n个正整数的序列,m次询问.每次询问一个区间$l_i$到$r_i$中,权值在$a_i$到$b_i$之间的数有多少个. 注释:$1\le n\ ...
- Ubuntu 16.04通过Trickle限制某个软件的下载/上传速度
在Linux下没有Windows使用360那样去限制某个软件的速度. 但是通过Trickle可以设置某个软件的网速,但是前提是通过Trickle命令连带启动这个软件才可以,不能中途去设置. 比如现在很 ...
- Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n
错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refre ...
- FAST_START_MTTR_TARGET
Release 9i introduced a new parameter, FAST_START_MTTR_TARGET, that makes controlling instance recov ...
- 关于static静态块的使用和static list的使用
public class CorsConfiguration { /** * Wildcard representing <em>all</em> origins, metho ...
- muduo库源码剖析(一) reactor模式
一. Reactor模式简介 Reactor释义“反应堆”,是一种事件驱动机制.和普通函数调用的不同之处在于:应用程序不是主动的调用某个API完成处理,而是恰恰相反,Reactor逆置了事件处理流程, ...
- Ubuntu下用hadoop2.4搭建集群(伪分布式)
要真正的学习hadoop,就必需要使用集群,可是对于普通开发人员来说,没有大规模的集群用来測试,所以仅仅能使用伪分布式了.以下介绍怎样搭建一个伪分布式集群. 为了节省时间和篇幅,前面一些步骤不再叙述. ...
- 分布式数据库中间件DDM的实现原理
随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性.甚至指数级上升的情况.此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据库中间 ...