Luogu 4721 【模板】分治 FFT

还不会这题的多项式求逆的算法。

发现每一项都是一个卷积的形式,那么我们可以使用$NTT$来加速,直接做是$O(n^2logn)$的,我们考虑如何加速转移。

可以采用$cdq$分治的思想,对于区间$[l, r]$中的数,先计算出$[l, mid]$中的数对$[mid + 1, r]$中的数的贡献,然后直接累加到右边去。

容易发现,这样子每一次需要用向量$[l,l + 1, l +  2, \dots, mid]$卷上$g$中$[1, 2, \dots, r - l]$。

时间复杂度$O(nlog^2n)$,感觉这东西跑得并不慢鸭。

Code:

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;const int N = 3e5 + 5;
const ll P = 998244353LL;int n, lim, pos[N];
ll f[N], g[N], a[N], b[N];template <typename T>
inline void read(T &X) {X = 0; char ch = 0; T op = 1;for (; ch > '9'|| ch < '0'; ch = getchar())if (ch == '-') op = -1;for (; ch >= '0' && ch <= '9'; ch = getchar())X = (X << 3) + (X << 1) + ch - 48;X *= op;
}template <typename T>
inline void swap(T &x, T &y) {T t = x; x = y; y = t;
}inline ll fpow(ll x, ll y) {ll res = 1LL;for (; y > 0; y >>= 1) {if (y & 1) res = res * x % P;x = x * x % P;}return res;
}inline void prework(int len) {int l = 0;for (lim = 1; lim <= len; lim <<= 1, ++l);for (int i = 0; i < lim; i++)pos[i] = (pos[i >> 1] >> 1) | ((i & 1) << (l - 1));
}inline void ntt(ll *c, int opt) {for (int i = 0; i < lim; i++)if (i < pos[i]) swap(c[i], c[pos[i]]);for (int i = 1; i < lim; i <<= 1) {ll wn = fpow(3, (P - 1) / (i << 1));if (opt == -1) wn = fpow(wn, P - 2);for (int len = i << 1, j = 0; j < lim; j += len) {ll w = 1;for (int k = 0; k < i; k++, w = w * wn % P) {ll x = c[j + k], y = c[j + k + i] * w % P;c[j + k] = (x + y) % P, c[j + k + i] =(x - y + P) % P;}}}if (opt == -1) {ll inv = fpow(lim, P - 2);for (int i = 0; i < lim; i++) c[i] = c[i] * inv % P;}
}void solve(int l, int r) {if (l == r) {a[l] = (a[l] + b[l]) % P;return;}int mid = ((l + r) >> 1);solve(l, mid);prework(r - l + 1);for (int i = 0; i < lim; i++) g[i] = f[i] = 0;for (int i = l; i <= mid; i++) f[i - l] = a[i];for (int i = 1; i <= r - l; i++) g[i - 1] = b[i];ntt(f, 1), ntt(g, 1);for (int i = 0; i < lim; i++) f[i] = f[i] * g[i] % P;ntt(f, -1);for (int i = mid + 1; i <= r; i++) a[i] = (a[i] + f[i - l - 1]) % P;solve(mid + 1, r);
}int main() {read(n); n--;for (int i = 1; i <= n; i++) read(b[i]);a[0] = 1;solve(1, n);for (int i = 0; i <= n; i++)printf("%lld%c", a[i], i == n ? '\n' : ' ');return 0;    
}
View Code

 

转载于:https://www.cnblogs.com/CzxingcHen/p/10197696.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

根文件系统构建(Buildroot 方式)

目录何为buildroot&#xff1f;buildroot 简介buildroot 下载buildroot 构建根文件系统配置buildroot编译buildrootbuildroot 根文件系统测试buildroot 第三方软件和库的配置buildroot 下的busybox 配置busybox 配置busybox 中文字符的支持编译busybox根文件系统测试前面我们学…

Jquery weui picker 支持label和value

万年没更新了. 最近用jquery weui. 在使用picker时需要一些问题. 就是让picker 显示label, 但是取值的时候取value用于存储. 官网例子如下 Jquery-weui 官网 : 点这里 写这篇文章时&#xff0c;用的版本是1.2.1版本 $("#picker-name").picker({title: "请选择您…

Linux—任务计划

1、周期性任务计划&#xff1a;管理系统的过程中&#xff0c;我们并不是每次都直接执行脚本或者命令&#xff0c;有时候需要让脚本、命令以及系统等在指定的时间按照我们的意愿执行我们设定好的脚本或者命令&#xff0c;这时候就需要使用到Linux任务计划的功能了&#xff0c;但…

计算机网络第1章(概述)

B站视频&#xff1a;计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09; 网址&#xff1a;https://www.bilibili.com/video/BV1c4411d7jb?p61 目录图示说明1.1、计算机网络在信息时代的作用我国互联网发展状况1.2、因特网概述1、网络、互连网&#xff08;互联网&…

Linux命令(七)Linux用户管理和修改文件权限

1. 用户管理 1.1 创建用户/设置密码/删除用户 &#xff08;-m很重要&#xff0c;自动添加用户家目录&#xff09; 创建用户组dev, 给用户组dev新建xiaoqin用户&#xff0c;给新用户设置密码&#xff01; 1.2 查看用户信息 1.3 设置用户主组/附加组 &#xff08;常使用修改用户附…

元模型驱动

感谢徐昊给我们传授这么好的思想。虽然我现在还没有全部弄明白——————————在网上查到了元数据的解释是关于数据的数据。那么元模型就是关于模型的模型。抽象的过程就是形成元模型的过程。建模的过程就是抽象的过程。我们要形成object的模型&#xff0c;所以建立了的是…

2月末周全球域名解析商Top15:万网DNSPod份额均上涨

IDC评述网&#xff08;idcps.com&#xff09;03月11日报道&#xff1a;据域名统计机构WebHosting.info最新数据&#xff0c;在2月末周&#xff08;截至3月3日&#xff09;期间&#xff0c;我国仍是两名域名解析服务商跻身进全球前十五强。其中&#xff0c;中国万网排名第9&…

计算机网络第4章(网络层)

B站视频&#xff1a;计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09; 网址&#xff1a;https://www.bilibili.com/video/BV1c4411d7jb?p61 目录4.1、网络层概述简介总结4.2、网络层提供的两种服务面向连接的虚电路服务无连接的数据报服务虚电路服务与数据报服务的…

Struts2中action接受参数方法

Struts2中Action接收参数的方法主要有以下三种&#xff1a;1.使用Action的属性接收参数&#xff1a; a.定义&#xff1a;在Action类中定义属性&#xff0c;创建get和set方法&#xff1b; b.接收&#xff1a;通过属性接收参数&#xff0c;如&#xff1a;userName&#xff…

计算机网络第5章(传输层)

B站视频&#xff1a;计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09; 网址&#xff1a;https://www.bilibili.com/video/BV1c4411d7jb?p61 目录5.1、运输层概述概念总结5.2、运输层端口号、复用与分用的概念为什么用端口号发送方的复用和接收方的分用TCP/IP体系的…

计算机网络第6章(应用层)

B站视频&#xff1a;计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09; 网址&#xff1a;https://www.bilibili.com/video/BV1c4411d7jb?p61 目录6.1、应用层概述6.2、客户/服务器方式&#xff08;C/S方式&#xff09;和对等方式&#xff08;P2P方式&#xff09;概…

[Linux主机] 优化你的php-fpm(php5.3+)让你的网站跑得更快

2019独角兽企业重金招聘Python工程师标准>>> [Linux主机]优化你的php-fpm(php5.3&#xff09;让你的网站跑得更快 从php5.3以后php自带了php-fpm不是和php5.2一样以插件的方式存在了。这给我们带来一个好处502没有那么容易出现了 坛子里用linux的绝大多数应该还是在…

Linux网络编程——千峰物联网笔记

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

必须掌握的前端模板引擎之art-template

常用的模板引擎有tpl.js、baiduTemplate、doT.js、art-template等等&#xff1b; 我所理解的模板引擎就是把js数据传到html中展示出来&#xff1b; art-template 是一个简约、超快的模板引擎。 art-template有两种语法&#xff1a; 一、标准语法可以让模板更容易读写&#xff1…

蓝牙BLE(协议栈、OSAL、蓝牙APP工具)

目录蓝牙配对和绑定蓝牙4.0 BLE信道(RF Channel)BLE协议栈分层PHY层(Physical layer 物理层)LL层(Link Layer 链路层)HCI层(Host controller interface 主机控制接口层)L2CAP层(Logic link control and adaptation protocol 逻辑链路控制和自适应协议)SMP层(Secure manager pro…

Ubuntu 安装 samba 实现文件共享和source insight 阅读uboot

环境&#xff1a;win10 虚拟机Ubuntu 12.04 一. samba的安装: # sudo apt-get install samba # sudo apt-get install smbfs 二. 创建共享目录&#xff0c;或是找已经存在的文件夹&#xff0c;只要权限放开就行了: # mkdir /home/share # sudo chmod 777 /home/share 三. 创建…

Eclipse 修改文本编码方式

近两天因为业务需要帮另一个项目组突击进度&#xff0c;把对方的工程导入Eclipse一看&#xff0c;全是乱码。后来一问才知道对方用的编码是GBK&#xff0c;无力吐槽。但是毕竟只是帮忙&#xff0c;不能要求别人改&#xff0c;只好自己将就了。我的默认编码是UTF-8&#xff0c;当…

正点原子STM32(基于标准库)

正点原子B站视频地址&#xff1a;https://www.bilibili.com/video/BV1Lx411Z7Qa?p4&spm_id_frompageDriver 目录STM32命名规则STM32芯片解读开发环境搭建(MDK - 就是ARM的keil,需破解 支持包 CH340串口驱动 JLINK驱动)程序下载方法 (ISP串口下载 JLINK下载更方便)新建工…

数据结构与算法(6) -- heap

binary heap就是一种complete binary tree(完全二叉树)。也就是说&#xff0c;整棵binary tree除了最底层的叶节点之外&#xff0c;都是满的。而最底层的叶节点由左至右又不得有空隙。 以上是一个对heap的简单介绍。本文将用heap指代此种完全二叉树。那么在实际编写代码的时候怎…

涂鸦WIFI模组方案(MCU SDK)

摘自涂鸦官方视频教程&#xff1a;https://www.bilibili.com/video/BV1pb41117LD?spm_id_from333.999.0.0等 摘自&#xff1a;涂鸦IoT开发平台MCU开发接入(Wi-Fi)-App面板 地址&#xff1a;https://www.bilibili.com/video/BV1cK4y1x7Up?spm_id_from333.999.0.0 摘自&#xf…