传送门

久违的多项式全家桶= =+

分治NTT 用的就是cdq分治的思想 对于当前递归到的区间[l,r] 我们处理出[l,mid]对[mid+1,r]答案的贡献

然后分治递归求解就可以啦qwq

这个贡献是前一半卷积的答案加过去就可以啦

对于x的贡献

附代码。

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cmath>
#define ll long long
#define mdn 998244353
#define G 3
#define mxn 200010
using namespace std; int ksm(int bs,int mi)
{
int ans=1;
while(mi)
{
if(mi&1) ans=(ll)ans*bs%mdn;
bs=(ll)bs*bs%mdn; mi>>=1;
}
return ans;
}
int rev[mxn],inv;
int init(int n)
{
int lim=1,l=0;
while(lim<n) lim<<=1,l++;
for(int i=1;i<lim;i++)
rev[i]=(rev[i>>1]>>1)|((i&1)<<(l-1));
inv=ksm(lim,mdn-2);
return lim;
} void NTT(int *a,int n,int f)
{
for(int i=0;i<n;i++) if(rev[i]>i) swap(a[rev[i]],a[i]);
for(int k=2;k<=n;k<<=1)
{
int Wn=ksm(G,(mdn-1)/k),mid=k>>1;
if(f) Wn=ksm(Wn,mdn-2);
for(int w=1,i=0;i<n;i+=k,w=1)
for(int j=0;j<mid;j++,w=(ll)w*Wn%mdn)
{
int x=a[i+j],y=(ll)w*a[i+mid+j]%mdn;
a[i+j]=(x+y)%mdn;
a[i+mid+j]=(x-y+mdn)%mdn;
}
}
if(f) for(int i=0;i<n;i++) a[i]=(ll)a[i]*inv%mdn;
} int f[mxn],g[mxn],h[mxn],a[mxn],b[mxn];
void cdq(int l,int r)
{
if(l==r) return;
int mid=(l+r)>>1;
cdq(l,mid); int lim = init(r-l+1);
for(int i=0;i<=mid-l;i++) a[i]=f[l+i];
for(int i=mid-l+1;i<=lim;i++) a[i]=0;
for(int i=0;i<=r-l;i++) b[i]=g[i];
for(int i=r-l+1;i<=lim;i++) b[i]=0;
NTT(a,lim,0); NTT(b,lim,0);
for(int i=0;i<lim;i++) a[i]=(ll)a[i]*b[i]%mdn;
NTT(a,lim,1);
//for(int i=0;i<lim;i++) printf("%d ",a[i]);
for(int i=mid+1;i<=r;i++) f[i]=(ll)(f[i]+a[i-l])%mdn;
cdq(mid+1,r);
}
int n;
int main()
{
scanf("%d",&n);
for(int i=1;i<n;i++) scanf("%d",&g[i]);
f[0]=1;
cdq(0,n);
for(int i=0;i<n;i++) printf("%d ",f[i]);
return 0;
}

洛谷4721 【模板】分治 FFT的更多相关文章

  1. 洛谷.4721.[模板]分治FFT(NTT)

    题目链接 换一下形式:\[f_i=\sum_{j=0}^{i-1}f_jg_{i-j}\] 然后就是分治FFT模板了\[f_{i,i\in[mid+1,r]}=\sum_{j=l}^{mid}f_jg ...

  2. 解题:洛谷4721 [模板]分治FFT

    题面 这是CDQ入门题,不要被题目名骗了,这核心根本不在不在FFT上啊=.= 因为后面的项的计算依赖于前面的项,不能直接FFT.所以用CDQ的思想,算出前面然后考虑给后面的贡献 #include< ...

  3. 洛谷 P4721 [模板]分治FFT —— 分治FFT / 多项式求逆

    题目:https://www.luogu.org/problemnew/show/P4721 分治做法,考虑左边对右边的贡献即可: 注意最大用到的 a 的项也不过是 a[r-l] ,所以 NTT 可以 ...

  4. 【洛谷4721】【模板】分治FFT(CDQ分治_NTT)

    题目: 洛谷 4721 分析: 我觉得这个 "分治 FFT " 不能算一种特殊的 FFT ,只是 CDQ 分治里套了个用 FFT (或 NTT)计算的过程,二者是并列关系而不是偏正 ...

  5. 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)

    To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...

  6. 洛谷 4721 【模板】分治 FFT——分治FFT / 多项式求逆

    题目:https://www.luogu.org/problemnew/show/P4721 分治FFT:https://www.cnblogs.com/bztMinamoto/p/9749557.h ...

  7. POJ 1741.Tree and 洛谷 P4178 Tree-树分治(点分治,容斥版) +二分 模板题-区间点对最短距离<=K的点对数量

    POJ 1741. Tree Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 34141   Accepted: 11420 ...

  8. 洛谷.1919.[模板]A*B Problem升级版(FFT)

    题目链接:洛谷.BZOJ2179 //将乘数拆成 a0*10^n + a1*10^(n-1) + ... + a_n-1的形式 //可以发现多项式乘法就模拟了竖式乘法 所以用FFT即可 注意处理进位 ...

  9. 洛谷.3803.[模板]多项式乘法(FFT)

    题目链接:洛谷.LOJ. FFT相关:快速傅里叶变换(FFT)详解.FFT总结.从多项式乘法到快速傅里叶变换. 5.4 又看了一遍,这个也不错. 2019.3.7 叕看了一遍,推荐这个. #inclu ...

  10. [洛谷P3806] [模板] 点分治1

    洛谷 P3806 传送门 这个点分治都不用减掉子树里的了,直接搞就行了. 注意第63行 if(qu[k]>=buf[j]) 不能不写,也不能写成>. 因为这个WA了半天...... 如果m ...

随机推荐

  1. ubuntu 18.04下修改pip镜像源

    在home/用户名/目录下创建.pip文件夹 然后cd .pip 创建pip.conf文件touch pip.conf 输入以下内容然后保存即可 [global] timeout = 6000 ind ...

  2. [luogu]P1463 [SDOI2005]反素数ant[dfs][数学][数论]

    [luogu]P1463 [SDOI2005]反素数ant ——!x^n+y^n=z^n 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足: ...

  3. Python_010(迭代器)

    一.函数名的运用 1.函数名的内存地址 def func(): print("英雄联盟") print(func) #输出结果: <function func at 0x00 ...

  4. python 数字系列-复数的数学运算

    复数的数学运算 问题 你写的最新的网络认证方案代码遇到了一个难题,并且你唯一的解决办法就是使用复数空间. 再或者是你仅仅需要使用复数来执行一些计算操作. 解决方案 复数可以用使用函数 complex( ...

  5. 协议-网络-WebDev:WebDec 百科

    ylbtech-协议-网络-WebDev:WebDec 百科 WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1 ...

  6. PHP 数组下标自动转换为整型的坑

    在做项目时,上线后遇到一个 BUG,有一个数组存储了下标从 '01'到'18' 总共18组数据.上线前测试了前几组数据,没问题.上线后,在用户选择'15'时报错,找不到这个数据.查了一下代码,数据是没 ...

  7. JSP表单提交 与 接受显示

    Demo01.jsp 提交表单输入的信息至 Demo02.jsp方法一 1 <%@ page language="java" contentType="text/h ...

  8. 【ABAP系列】SAP webservice HTTP框架出错 404错误

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP webservice H ...

  9. 001/Nginx高可用模式下的负载均衡与动静分离(笔记)

    Nginx高可用模式下的负载均衡与动静分离 Nginx(engine x)是一个高性能的HTTP和反向代理服务器,具有内存少,并发能力强特点. 1.处理静态文件.索引文件以及自动索引:打开文件描述符缓 ...

  10. jmeter处理接口加密和解密

    https://www.liangzl.com/get-article-detail-39672.html https://www.cnblogs.com/artoftest/p/7277996.ht ...