随笔分类 - 数学——FFT/NTT/FWT/多项式求逆、求ln
1
摘要:https://acm.hdu.edu.cn/showproblem.php?pid=6975 题意: 给出2个串S和T,含有通配符。 若S的一个子串满足和T不匹配的位置<=k个,则认为S的这个子串与T是匹配的 对于k∈[0,|T|],回答S中有多少个子串与T匹配 解决这道问题首先要明白如何用FFT
阅读全文
摘要:一、最基础的字符串匹配 给出1个长为n的串S和1个长为m的串T,询问T在S中出现的位置。 这是kmp经典问题,但现在我们要用FFT解决 令 dis(Si,T)=∑m−1k=0(Si+k−Tk)2 若dis(Si,T)=0,则S中从i开始的m个字符和T匹配,
阅读全文
摘要:大家快来膜呀~~~ #include<bits/stdc++.h> #define int long long const int P = 998244353; const int G = 3; using namespace std; const int N=400005; int n,f[N],
阅读全文
摘要:https://www.luogu.com.cn/problem/P4725 ln的导数=原多项式的导数/求逆 再积分得到多项式除去常数项的的ln 即得到的是B'(x)=a0+a1*x+a2*x^2+…… 所以B(x)=C+a0*x+a1/2*x^2+a2/3*x^3…… 还需要带入求C 这道题给出
阅读全文
摘要:https://www.luogu.com.cn/problem/P4238 #include<cstdio> #include<algorithm> using namespace std; #define N 300001 const int mod=998244353; const int g
阅读全文
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=4332 因为如果一位小朋友得不到糖果,那么在她身后的小朋友们也都得不到糖果。 所以设g[i][j] 表示前i位小朋友,分到j个糖果,且前i位小朋友都分到糖果的方案数 令F(x) 表示分到x个糖果的欢乐
阅读全文
摘要:求出序列的生成函数后,倍增FWT #include<cstdio> using namespace std; #define N 2048 const int mod=1e9+7; int inv; int f[N+1]; int Pow(int a,int b) { int res=1; for(
阅读全文
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=4589 n*m*m 做法 dp[i][j] 前i堆石子,异或和为j的方案数 第一重循环可以矩阵快速幂优化 后面求出序列的生成函数可以FWT优化 做log次FWT也很慢(logn*m*logm) 两个合
阅读全文
摘要:https://www.codechef.com/status/COUNTARI 题意: 给出n个数,求满足i<j<k且a[j]-a[i]==a[j]-a[k] 的三元组(i,j,k)的个数 n^2 做法: 枚举j和k,当j右移时,令sum[num[右移之前j的值]]++ 每次统计sum[num[j
阅读全文
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=4827 式子化简一下,发现最后只跟 Σ xi*yi 有关 第二个序列反转,就可以用FFT优化 注意: 循环会想到将序列复制一遍,但只能复制一个序列, 若n=4,第一个序列为1 2 3 4,,第二个序列
阅读全文
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=3160 不连续的回文串数量=所有的回文序列数量-连续的回文子串 连续的回文子串: manacher 得到的以i为中心的连续回文串数量=以i为中心的最长回文半径长度 所有的回文序列: 将a看做1,b看做
阅读全文
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=4259 令通配符=0 f[i+m-1]=Σ (a[i+j]-b[m-1-j])^2 * a[i+j] * b[m-1-j] 若a[i,i+m-1]能匹配上b[0,m-1],则f[i+m-1]=0 式子
阅读全文
摘要:NTT(快速数论变换)用到的各种素数及原根: https://blog.csdn.net/hnust_xx/article/details/76572828 NTT多项式乘法模板
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5909 题意: 给出一颗带点权的树,输出有多少联通块的点权异或和=[1,m) dp[x][i] 以x为根的子树中,联通块内一定有x,目前异或和为i 的联通块 个数 dp[x][i] = dp[x][i] + Σ Σ
阅读全文
摘要:http://codeforces.com/contest/662/problem/C 题意:n行m列01矩阵,每次可以反转一行或一列,问最后最少可以剩下多少个1 n只有20,把行状态压缩 操作奇数次相当于1次,操作偶数次相当于不操作 所以可以枚举对行的操作,将操作也状态压缩 A[i] 表示有多少列
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=2194 相乘两项的下标 的 差相同 那么把某一个反过来就是卷积形式 fft优化
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3513 组成三角形的条件:a+b>c 其中,a<c,b<c 若已知 两条线段之和=i 的方案数g[i] 线段长度>i的 线段数量 t[i] 答案是否可以表示为 Σ g[i]*t[i] ? 不能,因为 有
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3527 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. 以n=4为例: 设数组a[],b[] 令c[]=a[]反转 y[]=c[]*b[] 那么E[i]=x[i]-y[n-i-1]
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=2179 FFT做高精乘 #include<cmath> #include<cstdio> #include<complex> using namespace std; #define N 60001 c
阅读全文
摘要:https://www.luogu.org/problem/show?pid=3803 题目背景 这是一道模版题 题目描述 给定一个n次多项式F(x),和一个m次多项式G(x)。 请求出F(x)和G(x)的卷积。 输入输出格式 输入格式: 第一行2个正整数n,m。 接下来一行n+1个数字,从低到高表
阅读全文
1