思路:

RT

  1. //By SiriusRen
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. const int N=<<,mod=;
  5. int A[N],C[N],invC[N],c[N],d[N],R[N],tmp[N],xx,len,sqrA[N],F[N];
  6. typedef long long ll;
  7. int power(ll x,int y){
  8. ll res=;
  9. while(y){
  10. if(y&)res=res*x%mod;
  11. x=x*x%mod,y>>=;
  12. }return res;
  13. }
  14. void NTT(int *a,int n,int f){
  15. int m=,L=;
  16. for(;m<n;m<<=)L++;
  17. for(int i=;i<n;i++)R[i]=(R[i>>]>>)|((i&)<<(L-));
  18. for(int i=;i<n;i++)if(i<R[i])swap(a[i],a[R[i]]);
  19. for(int l=;l<n;l<<=){
  20. int wn=power(,((mod-)/(l<<)*f+mod-)%(mod-));
  21. for(int j=;j<n;j+=(l<<)){
  22. int w=;
  23. for(int k=;k<l;k++,w=1ll*w*wn%mod){
  24. int x=a[j+k],y=1ll*a[j+k+l]*w%mod;
  25. a[j+k]=(x+y)%mod,a[j+k+l]=(x-y+mod)%mod;
  26. }
  27. }
  28. }
  29. if(f==-){
  30. int ni=power(n,mod-);
  31. for(int i=;i<n;i++)a[i]=1ll*a[i]*ni%mod;
  32. }
  33. }
  34. void get_inv(int *a,int *b,int n){
  35. if(n==){b[]=power(a[],mod-);return;}
  36. get_inv(a,b,n>>);
  37. memcpy(tmp,a,sizeof(int)*n),memset(tmp+n,,sizeof(int)*n);
  38. NTT(tmp,n<<,),NTT(b,n<<,);
  39. for(int i=;i<n<<;i++)b[i]=(1ll*b[i]*(-1ll*b[i]*tmp[i]%mod)%mod+mod)%mod;
  40. NTT(b,n<<,-),memset(b+n,,sizeof(int)*n);
  41. }
  42. void get_root(int *a,int *b,int n){
  43. if(n==){b[]=;return;}
  44. get_root(a,b,n>>),memset(d,,sizeof(int)**n);
  45. get_inv(b,d,n);
  46. memcpy(c,a,sizeof(int)*n),memset(c+n,,sizeof(int)*n);
  47. NTT(c,n<<,),NTT(b,n<<,),NTT(d,n<<,);
  48. for(int i=;i<n<<;i++)b[i]=(1ll*c[i]*d[i]%mod+b[i])%mod*%mod;
  49. NTT(b,n<<,-),memset(b+n,,sizeof(int)*n);
  50. }
  51. signed main(){
  52. int n,m;
  53. scanf("%d%d",&n,&m);
  54. for(len=;len<=m;len<<=);A[]=;
  55. for(int i=;i<=n;i++)scanf("%d",&xx),C[xx]=,A[xx]=mod-;
  56. get_root(A,sqrA,len),sqrA[]++,get_inv(sqrA,F,len);
  57. for(int i=;i<=m;i++)printf("%d\n",(F[i]<<)%mod);
  58. }

BZOJ 3625 多项式求逆+多项式开根的更多相关文章

  1. FFT模板 生成函数 原根 多项式求逆 多项式开根

    FFT #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> ...

  2. 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\) \( ...

  3. 【learning】多项式相关(求逆、开根、除法、取模)

    (首先要%miskcoo,这位dalao写的博客(这里)实在是太强啦qwq大部分多项式相关的知识都是从这位dalao博客里面学的,下面这篇东西是自己对其博客学习后的一些总结和想法,大部分是按照其博客里 ...

  4. 【BZOJ3625】【codeforces438E】小朋友和二叉树 生成函数+多项式求逆+多项式开根

    首先,我们构造一个函数$G(x)$,若存在$k∈C$,则$[x^k]G(x)=1$. 不妨设$F(x)$为最终答案的生成函数,则$[x^n]F(x)$即为权值为$n$的神犇二叉树个数. 不难推导出,$ ...

  5. [Codeforces438E][bzoj3625] 小朋友和二叉树 [多项式求逆+多项式开根]

    题面 传送门 思路 首先,我们把这个输入的点的生成函数搞出来: $C=\sum_{i=0}^{lim}s_ix^i$ 其中$lim$为集合里面出现过的最大的数,$s_i$表示大小为$i$的数是否出现过 ...

  6. bzoj 3456 城市规划——分治FFT / 多项式求逆 / 多项式求ln

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3456 分治FFT: 设 dp[ i ] 表示 i 个点时连通的方案数. 考虑算补集:连通的方 ...

  7. NTT+多项式求逆+多项式开方(BZOJ3625)

    定义多项式$h(x)$的每一项系数$h_i$,为i在c[1]~c[n]中的出现次数. 定义多项式$f(x)$的每一项系数$f_i$,为权值为i的方案数. 通过简单的分析我们可以发现:$f(x)=\fr ...

  8. 【BZOJ3456】轩辕朗的城市规划 无向连通图计数 CDQ分治 FFT 多项式求逆 多项式ln

    题解 分治FFT 设\(f_i\)为\(i\)个点组成的无向图个数,\(g_i\)为\(i\)个点组成的无向连通图个数 经过简单的推导(枚举\(1\)所在的连通块大小),有: \[ f_i=2^{\f ...

  9. 2019.01.01 bzoj3625:小朋友和二叉树(生成函数+多项式求逆+多项式开方)

    传送门 codeforces传送门codeforces传送门codeforces传送门 生成函数好题. 卡场差评至今未过 题意简述:nnn个点的二叉树,每个点的权值KaTeX parse error: ...

  10. P6295-有标号 DAG 计数【多项式求逆,多项式ln】

    正题 题目链接:https://www.luogu.com.cn/problem/P6295 题目大意 求所有\(n\)个点的弱联通\(DAG\)数量. \(1\leq n\leq 10^5\) 解题 ...

随机推荐

  1. xfce 安装文泉驿字体

    下载文泉驿字体 #拷贝字体到目录/usr/share/fonts/wqy#创建字体缓存 mkfontscale # 在当前目录下生成fonts.scale文件 mkfontdir # 在当前目录下生成 ...

  2. [河南省队2012] 找第k小的数

    ★★☆   输入文件:kth.in   输出文件:kth.out   简单对比时间限制:1 s   内存限制:128 MB 题目描述 看到很短的题目会让人心情愉悦,所以给出一个长度为N的序列A1,A2 ...

  3. [bzoj3809]Gty的二逼妹子序列_莫队_分块

    Gty的二逼妹子序列 bzoj-3809 题目大意:给定一个n个正整数的序列,m次询问.每次询问一个区间$l_i$到$r_i$中,权值在$a_i$到$b_i$之间的数有多少个. 注释:$1\le n\ ...

  4. Ubuntu 16.04通过Trickle限制某个软件的下载/上传速度

    在Linux下没有Windows使用360那样去限制某个软件的速度. 但是通过Trickle可以设置某个软件的网速,但是前提是通过Trickle命令连带启动这个软件才可以,不能中途去设置. 比如现在很 ...

  5. 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 ...

  6. FAST_START_MTTR_TARGET

    Release 9i introduced a new parameter, FAST_START_MTTR_TARGET, that makes controlling instance recov ...

  7. 关于static静态块的使用和static list的使用

    public class CorsConfiguration { /** * Wildcard representing <em>all</em> origins, metho ...

  8. muduo库源码剖析(一) reactor模式

    一. Reactor模式简介 Reactor释义“反应堆”,是一种事件驱动机制.和普通函数调用的不同之处在于:应用程序不是主动的调用某个API完成处理,而是恰恰相反,Reactor逆置了事件处理流程, ...

  9. Ubuntu下用hadoop2.4搭建集群(伪分布式)

    要真正的学习hadoop,就必需要使用集群,可是对于普通开发人员来说,没有大规模的集群用来測试,所以仅仅能使用伪分布式了.以下介绍怎样搭建一个伪分布式集群. 为了节省时间和篇幅,前面一些步骤不再叙述. ...

  10. 分布式数据库中间件DDM的实现原理

    随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性.甚至指数级上升的情况.此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据库中间 ...