NTT板子】的更多相关文章

贴板子啦-- FFT板子:luogu P3803 [模板]多项式乘法(FFT) #include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #include<cstring> #include<cstdlib> #include<cctype> #include<vector> #include<stack> #in…
不说别的. 这份NTT跑得比FFT快,不知道为什么. 以下代码针对\(10^5\)的数据范围. #include<cstdio> #include<vector> #include<algorithm> #include<cstring> using namespace std; inline int read() { int a = 0, c = getchar(), w = 1; for(; c < '0' || c > '9'; c = g…
设\(f[i][j]\)表示填了\(i\)个数,数位和为\(j\)的方案数 于是方程为: \[f[i][j]=\sum_{k=0}^9 f[i-1][j-k]*[CanUse[k]==1]\] 其中\(CanUse[i]\)表示是否可用\(i\)这个数字 最终答案为: \[\sum_{i=0}^{9*(n/2)}f[n/2][j]\] 直接转移肯定\(T\)飞,需要一些优化.于是我们观察到这个式子是卷积形式的式子,直接上\(NTT\)板子+快速幂即可 \(P.S.\)一些优化 可以把每个\(po…
A thief made his way to a shop. As usual he has his lucky knapsack with him. The knapsack can contain k objects. There are n kinds of products in the shop and an infinite number of products of each kind. The cost of one product of kind i is ai. The t…
本文为博主原创文章,未均允许…… 反正我也没法管对吧 www点cnblogs点com/AwD-/ 维护一个序列,初始全为\(1\) 支持两种操作: 1.对于所有的位置\(i\),将它的值乘上\(i + a\) 2.询问\(a\)处的值 \(q=120000\) 20s 512M —————— 如果把第一个操作看成乘上一个\(x + a_i\),第二个操作看成询问\(x = a_i\)处多项式的值,那么这是一个裸的动态多点求值 首先暴力是可以AC的……恩,开个O2就行…… 直接上CDQ+静态多点求…
\(\mathrm{day}\) \(-4\) 又是睡到中午才起来,这样下去省选会睡迟的. 然后下午在补 WF2019 的题目,很快就能补完的(大雾). \(\mathrm{day}\) \(-3\) 早上 8 点半就(?)起床了,校内比赛疯狂场外提交原题.最终又咕掉了一题没做. 中午下午都在颓废,搭梯子把小马 S09E01E02 看完了,黑晶王能复活实在是太棒啦.并且能预感到空洞骑士很快就能通关五门啦! 并没有补任何的 WF 题,整个下午就在和 ghostfly 闲聊以及看 ghostfly…
题目链接:序列统计 我来复习板子了……这道题也是我写的第一发求原根啊? 求原根方法: 从小到大依次枚举原根.设当前枚举的原根为\(x\),模数为\(p\),\(p-1\)的质因数分别为\(p_1,p_2,\dots,p_m\),则只需检验\(x^{\frac{p-1}{p_i}}\equiv1 \pmod{p}\)是否成立即可.如果成立则\(x\)不是原根. 然后这道题朴素\(dp\)就不讲了.设\(m\)的原根为\(g\),那么把每个数表示成\(g^k\)的形式就可以乘法变加法了,就成为了\(…
PKUWC 2019 自闭记 Day -1 考前天天在隔壁的物竞教室划水(雀魂,能和吉老师一起玩的游戏都是好游戏),没有做题. Day 0 早上8:16的高铁,到广州南居然要6个小时...不知道福州和广州这么近的距离是怎么做到高铁这么久的..高铁上和一群去THU的同学(6个人只有我一个PKU,就是这么真实)约好了打奶牛的Pt组,结果因为开了 \(MN\) 个 deque 导致直接MLE也是迷的一批,对STL的内存管理产生了怀疑,糟糕的迹象. 准时到达了广州,又花了一个小时在高速前往中山的路上,有…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1028 分析: FFT/NTT板子题... 代码: NTT板子: #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> //by NeighThorn using namespace std; const int maxn=500000+5,…
传送门 题解 比赛的时候光顾着算某一个\(n\)的答案是多少忘了考虑不同的\(n\)之间的联系了--而且我也很想知道为什么推着推着会变成一个二项式反演-- 设\(f_n\)为\(n\)块积木时的总的层数,\(g_n\)为\(n\)块积木时总的方案数,则有\[g_n=\sum_{i=1}^n\binom{n}{i}g_{n-i}\] \[f_n=g_n+\sum_{i=1}^n\binom{n}{i}f_{n-i}\] \(g\)的话就是枚举第一层有哪几个,\(f\)的话也是枚举第一层有几个,前面…
..恩 打了四五遍 不会也背出来了.. BZOJ3160 [听说时限紧?转C++的优势么?] 上AC代码 fft /*Problem: 3160 User: cyz666 Language: C++ Result: Accepted Time:1992 ms Memory:18492 kb ****************************************************************/ #include <bits/stdc++.h> #define LL l…
如果你只好奇测试相关请跳至day 2 day 3 day 6 scoi 2019 之后 ​ 由于实力问题,省选的时候排名在三十多,显然是没有进队.不过可能是受过的打击比较多,所以还没有特别颓废,甚至连退役记也懒得写了.被拉回去补了两周的文化课,感觉看到noip的时候退赛的同学还挺亲切的,并且老实说,那两周确实比较充实,于是就决定一心学文化课了. ​ 可能是性格原因,到最后还是选择试试D类,不想想太多,也不想解释太多.在准备APIO和CTS的时候,主要做了前几年的几套题,打了场cf和agc,都涨了…
题目 Source http://hihocoder.com/problemset/problem/1388 Description Profess X is an expert in signal processing. He has a device which can send a particular 1 second signal repeatedly. The signal is A0 ... An-1 under n Hz sampling. One day, the device…
传送门:hihocoder #1388 : Periodic Signal 先来几个大牛传送门:  (模板) NTT long long 版 解法一:因为我们知道FFT会精度不够,所以坚持用NTT,但是模数不够大,然后就一直GG,看来我们的搜索姿势也有问题,居然没有搜到上面大神的板子,真的是GG http://www.cnblogs.com/WABoss/p/5903927.html /*******************************************************…
先简短几句话说说FFT.... 多项式可用系数和点值表示,n个点可确定一个次数小于n的多项式. 多项式乘积为 f(x)*g(x),显然若已知f(x), g(x)的点值,O(n)可求得多项式乘积的点值. 我们所需要的就是O(nlogn)快速地将两个系数多项式表示成点值多项式,O(n)求得乘积的点值表示后O(nlogn)还原成系数多项式. 这里就需要套FFT板子了... FFT中取n个单位根,需要n是2的幂. 又因为n个点可确定一个次数小于n的多项式,所以n > 乘积多项式的最高次数. 以上. HD…
传送门 题意简述:求\(n​\)个点的简单无向连通图的数量\(\mod \;1004535809​\),\(n \leq 130000​\) 经典好题呀!这里介绍两种做法:多项式求逆.多项式求对数 先是多项式求逆的做法. 我们发现直接求连通图的数量并不好求,所以我们用所有图的数量\(g_n​\)减去不连通的数量,得到连通图的个数\(f_n​\). 易得\(g_n=2^{n \choose 2}​\) 考虑DP,枚举1号点所在的连通块大小,有\(f_n=g_n-\sum_{i=1}^{n-1} {…
前言 众所周知,这两个东西都是用来算多项式乘法的. 对于这种常人思维难以理解的东西,就少些理解,多背板子吧! 因此只总结一下思路和代码,什么概念和推式子就靠巨佬们吧 推荐自为风月马前卒巨佬的概念和定理都非常到位的总结 推荐ppl巨佬的简明易懂的总结 FFT 多项式乘法的蹊径--点值表示法 一般我们把两个长度为\(n\)的多项式乘起来,就类似于做竖式乘法,一位一位地乘再加到对应位上,是\(O(n^2)\)的 如何优化?直接看是没有思路的,只好另辟蹊径了. 多项式除了我们常用的系数表示法\(y=a_…
目录 信号, 集合, 多项式, 以及卷积性变换 卷积 卷积性变换 傅里叶变换与信号 引入: 信号分析 变换的基础: 复数 傅里叶变换 离散傅里叶变换 FFT 与多项式 \(n\) 次单位复根 消去引理, 折半引理与求和引理 重新定义 多项式的表示 快速傅里叶变换FFT 通过 FFT 在单位复数根处插值 FFT的速度优化与迭代实现 炸精现场与 NTT 原根 NTT 任意模数 NTT 卷积状物体与分治 FFT FWT 与位运算卷积 FWT 与 \(\text{or}\) 卷积 FWT 与 \(\te…
题目背景 模板题,无背景 题目描述 给定 22 个多项式 F(x), G(x)F(x),G(x) ,请求出 F(x) * G(x)F(x)∗G(x) . 系数对 pp 取模,且不保证 pp 可以分解成 p = a \cdot 2^k + 1p=a⋅2k+1 之形式. 输入输出格式 输入格式: 输入共 33 行.第一行 33 个整数 n, m, pn,m,p ,分别表示 F(x), G(x)F(x),G(x) 的次数以及模数 pp .第二行为 n+1n+1 个整数, 第 ii 个整数 a_iai​…
这是一道模板题. 给你两个多项式,请输出乘起来后的多项式. 输入格式 第一行两个整数 nn 和 mm,分别表示两个多项式的次数. 第二行 n+1n+1 个整数,表示第一个多项式的 00 到 nn 次项系数. 第三行 m+1m+1 个整数,表示第二个多项式的 00 到 mm 次项系数. 输出格式 一行 n+m+1n+m+1 个整数,表示乘起来后的多项式的 00 到 n+mn+m 次项系数. 样例一 input 1 2 1 2 1 2 1 output 1 4 5 2 explanation (1+…
FFT/NTT/MTT Tags:数学 作业部落 评论地址 前言 这是网上的优秀博客 并不建议初学者看我的博客,因为我也不是很了解FFT的具体原理 一.概述 两个多项式相乘,不用\(N^2\),通过\(FFT\)可以把复杂度优化到\(O(NlogN)\),\(NTT\)能够取模,\(MTT\)可以对非\(NTT\)模数取模,相对来说\(FFT\)常数小些因为不要取模 二.我们来背板子(FFT) 先放一个板子(洛谷P3803 [模板]多项式乘法(FFT)) #include<iostream>…
本来一直都是写\(7\)次的\(MTT\)的--然后被\(shadowice\)巨巨调教了一通之后只好去学一下\(4\)次的了-- 简单来说就是我们现在需要处理一类模数不为\(NTT\)模数的情况 这里是板子 三模\(NTT\) 跑的很慢而且我也不会,这里就不说了 拆系数\(FFT\) 两个多项式\(P(z),Q(z)\),我们把它们的系数拆成 \[A(z)=\sum_{i=0}^\infty (P_i>>15)z^i,B(z)=\sum_{i=0}^\infty (P_i\&3276…
在某咕上打了一晚上的模板 感觉还好... #include<bits/stdc++.h> #define LL long long using namespace std; inline int read() { ,f = ;char ch = getchar(); for(;!isdigit(ch);ch = getchar())if(ch == '-')f = -f; * x + ch - '; return x * f; } int n; priority_queue<int>…
解题关键:快速数论变换NTT模板. 注意$ans$数组的$ans[n]$一定要注意置$0$,或者结果从$n-1$开始遍历,这里很容易出错. 代码1:ACdreamer 的板子. 为什么要reverse序列至今没证明出来.=,=有懂的聚聚可以告诉本渣一下,万分感谢!!~~ 经过聚聚们的指导,还是不太懂,最终从wiki上找到了比较易懂的证明~ #include<cstdio> #include<cstring> #include<algorithm> #include<…
去年看过t老师写这题博客:以为是道神仙题 题目大意 求一个数列的$k$次前缀和.$n\le 10^5$. 题目分析 [计数]cf223C. Partial Sums 加强版.注意到最后的式子是$f_i=\sum\limits_{j+k=i}pre_j a_k$的样子,因此在预处理$pre_j$之后就是卷积的板子了. #include<bits/stdc++.h> #define MO 998244353 ; ; int n,len,dt; int cov[maxn],a[maxn],f[max…
板子题都差点不会了 Description 小C有一个集合S,里面的元素都是小于M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数 列,数列中的每个数都属于集合S.小C用这个生成器生成了许多这样的数列.但是小C有一个问题需要你的帮助: 给定整数x,求所有可以生成出的,且满足数列中所有数的乘积mod M的值等于x的不同的数列的有多少个.小C认为 ,两个数列{Ai}和{Bi}不同,当且仅当至少存在一个整数i,满足Ai≠Bi.另外,小C认为这个问题的答案可能很大 ,因此他只需要你帮助…
网上相关博客不少,这里给自己留个带点注释的模板,以后要是忘了作提醒用. 以洛谷3803多项式乘法裸题为例. FFT: #include <cstdio> #include <cmath> #include <cctype> #include <algorithm> #define ri readint() #define gc getchar() int readint() { , s = , c = gc; ) c = gc; , c = gc; + c…
1. 2. 点值表示法 假设两个多项式相乘后得到的多项式 的次数(最高次项的幂数)为 $n$.(这个很好求,两个多项式的最高次项的幂数相加就得到了) 对于每个点,要用 $O(n)$ 的时间 把 $x$ 分别代入两个多项式,得到两个结果 $z_1,z_2$,两者相乘得到 $z$,才能知道相乘后的多项式在代入一个 $x$ 时会得到 $z$,也就是固定了一个点 $(x,z)$. 至少需要 $n$ 个点(也就是枚举 $n$ 个 $x$)才能确定一个 $n$ 次多项式(拉格朗日插值),总时间复杂度 $O(…
具体原理就不讲了qwq,毕竟证明我也不太懂 FFT(快速傅立叶变换)&NTT(快速数论变换) FFT //求多项式乘积 //要求多项式A和多项式B的积多项式C //具体操作就是 //DFT(A),DFT(B)->暴力乘积->拉格朗日插值(即IDFT(C))->C //其中DFT表示离散傅里叶变换 //通俗的来说就是用点值表示多项式 //使用神秘单位复数根将时间复杂度降至O(nlogn) //ps:但是常数巨大 //pps:应用非常广泛,非常多题目都要fft or ntt优化,板子…
做了全家桶然后写了几道入门题. FFT.ref NTT.ref Luogu4238 [模板]多项式求逆 Link 套牛顿迭代完事.有一个细节问题是:这次运算多项式有几项就只赋几项的值,其他位置(次数大于n次的项在\(mod\ {x^n}\)意义下当然为0)一定要设成0(即清空数组),否则会计算错误. Luogu5205 [模板]多项式开根 Link 开根也是牛顿迭代的问题.运算的时候时刻注意是在\(mod\ {x^n}\)意义下进行的,这决定了多项式取的位数. tips:两个长度为n(2的次幂)…