FFT/NTT/FMT/FWT
文章平均质量分 68
快速傅里叶变换FFT, 快速沃尔什变换 FWT ,快速莫比乌斯变换 FMT, 快速数论变换 NTT
Jozky86
这个作者很懒,什么都没留下…
展开
-
CF662C Binary Table
CF662C Binary Table 题意: 有一个 n 行 m 列的表格,每个元素都是 0/1 ,每次操作可以选择一行或一列,把 0/1 翻转,即把 0 换为 1 ,把 1 换为 0 。请问经过若干次操作后,表格中最少有多少个 1 n<=20,m<=1e5 题解: 参考 洛谷题解第一篇,讲的太详细了 因为行很小(n<=20),列很大(m<=1e5),因为我们可以考虑枚举反转了哪些行。设X表示翻转了哪些行(X是一个整数,其二进制表示翻转的状态) 对于任意一列,设第i列的状态为SiS原创 2021-10-27 21:51:24 · 183 阅读 · 0 评论 -
Tree Cutting HDU - 5909
Tree Cutting HDU - 5909 题意: 一个无根树,n个点,n-1条边,每个节点有一个权值,一棵树的权值就是其节点(包含本身及其子节点)的权值的异或和;求价值为[0,m)的树有多少颗?(所谓的树其实就是原连通图的任意子图) n<=1000 m<=2102^{10}210 题解: 不难想到树形dp 设dp[u][i]表示以u节点为根的价值为i的树的数量 能得到转移方程: dp[u][j⨁k]=dp[u][j⨁k]+dp[u][j]∗d[v][k]dp[u][j\bigoplus k原创 2021-10-27 20:43:01 · 160 阅读 · 0 评论 -
BZOJ4589. Hard Nim
BZOJ4589. Hard Nim 题意: Claris和NanoApe在玩石子游戏,他们有n堆石子,规则如下: Claris和NanoApe两个人轮流拿石子,Claris先拿。 每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜。 不同的初始局面,决定了最终的获胜者,有些局面下先拿的Claris会赢,其余的局面Claris会负。 Claris很好奇,如果这n堆石子满足每堆石子的初始数量是不超过m的质数,而且他们都会按照最优策略玩游戏,那么NanoApe能获胜的局面有多少种。原创 2021-10-27 18:08:59 · 195 阅读 · 0 评论 -
FWT(快速沃尔什变换)
待更。。原创 2021-10-23 16:48:30 · 2021 阅读 · 0 评论 -
P3321 [SDOI2015]序列统计(未解决)
P3321 [SDOI2015]序列统计 题意: 题解: 参考题解: 题解 P3321 【[SDOI2015]序列统计】 【LG3321】[SDOI2015]序列统计 神仙题。。 代码:原创 2021-10-26 21:54:00 · 135 阅读 · 0 评论 -
CF993E Nikita and Order Statistics
CF993E Nikita and Order Statistics 题意: 给你一个数组 a1∼na_{1 \sim n}a1∼n,对于 k=0∼nk = 0 \sim nk=0∼n,求出有多少个数组上的区间满足:区间内恰好有 k 个数比 x 小。 x 为一个给定的数。 n≤2×105n \le 2 \times 10^5n≤2×105 −1e9<=ai<=1e9-1e9<=a_i<=1e9−1e9<=ai<=1e9 题解: 因为x是常数,也就是说对于每个数只有贡献原创 2021-10-26 21:02:15 · 144 阅读 · 0 评论 -
FFT/NTT/FMT/FWT题目
快速傅里叶变换FFT hdu4609 3-idiots 快速沃尔什变换 FWT 快速莫比乌斯变换 FMT 快速数论变换 NTT原创 2021-10-26 17:53:47 · 128 阅读 · 0 评论 -
P4245 【模板】任意模数多项式乘法(NTT)
题意: P4245 【模板】任意模数多项式乘法 题解: NTT模板,记录一下 代码: #include <bits/stdc++.h> using namespace std; #define REP(i, a, b) for (int i= (a), _end_= (b); i < _end_; ++i) #define debug(...) fprintf(stderr, __VA_ARGS__) #define mp make_pair #define x first #defi原创 2021-08-19 13:40:52 · 236 阅读 · 0 评论 -
P2000 拯救世界
P2000 拯救世界 题意: 为了拯救世界,小 a 和 uim 决定召唤出 kkksc03 大神和 lzn 大神。根据古籍记载,召唤出任何一位大神,都需要使用金木水火土五种五行神石来摆一个特定的大阵。而在古籍中,记载是这样的: kkksc03 大神召唤方法: 金神石的块数必须是 6 的倍数。 木神石最多用 9 块。 水神石最多用 5 块。 火神石的块数必须是 4 的倍数。 土神石最多用 7 块。 lzn 大神召唤方法: 金神石的块数必须是 2 的倍数。 木神石最多用 1 块。 水神石的块数必须是 8 的倍数原创 2021-09-11 12:42:41 · 188 阅读 · 0 评论 -
hdu4609 3-idiots
hdu4609 3-idiots 题意: 给出n个木棍以及它们的长度,求取其中三根长度各不相同的木棍组成三角形的概率 题解: 三角形满足条件: 任意两边之和大于第三边 我们设多项式A(x),其中Cixi(Ci是系数)C_ix^i(C_i是系数)Cixi(Ci是系数)表示长度为i的木棍个数是CiC_iCi。那么多项式A(x)∗A(x)A(x)*A(x)A(x)∗A(x)中xix^ixi前面的系数表示用两根木棍拼成长度为i的木棍的方案数,多项式相乘利用FFT加速O(nlogn) 对于两根木棍拼成的长度i,原创 2021-10-26 17:47:32 · 100 阅读 · 0 评论 -
P4173 残缺的字符串
P4173 残缺的字符串 题意: 有A,B两个串,每个串都有通配符,问A为模板串,对于 B 的每一个位置 i,从这个位置开始连续 m 个字符形成的子串是否可能与 A 串完全匹配? 题解: 我们定义两个字符串S,T的距离为: dis(S,T)=∑i=1n−1(Si−Ti)2∗Si∗Ti\sum_{i=1}^{n-1}(S_{i}-T_{i})^2*S_{i}*T_{i}∑i=1n−1(Si−Ti)2∗Si∗Ti 当T中以i结尾的串与S能匹配的条件为: dis(S,Ti−m+1,i)=0dis(S,T原创 2021-08-24 01:35:05 · 228 阅读 · 0 评论 -
FFT的多种应用
参考文章 FFT可以在nlogn的时间内实现n次多项式F(x)和m次多项式G(x)的卷积 ck=∑i+j=kaibj=∑i=0kaibk−ic_{k}=\sum_{i+j=k}a_{i}b_{j}=\sum_{i=0}^{k}a_{i}b_{k-i}ck=∑i+j=kaibj=∑i=0kaibk−i 基本形式: 对于类似:∑i+j=N+kaibj\sum_{i+j=N+k}a_{i}b_{j}∑i+j=N+kaibj的式子,可以直接用FFT计算 例题:P3723 [AH2017/HNOI原创 2021-08-24 00:15:05 · 1357 阅读 · 0 评论 -
Hash Function
Hash Function 文章目录题意:题解:代码NTT代码FFT代码 题意: 给定n个互不相同的数,找一个最小的模域,使得它们在这个模域下互不相同。n<=5e5 题解: 考虑两个数a和b,a与b模m余数相同,当且仅当|a-b|能被m整除。 这样问题就转化成找到一个最下的m,使得m不是任意一个|ai-aj|约数(不会被m整除) n<=5e5,所以直接暴力n2肯定不行 这时就要用到FFT/NTT加速 算N个数两两之差当然用FFT,利用多项式相乘即指数相加来做,(加减用指数,相乘用系数) 刚接触F原创 2021-07-21 16:33:43 · 167 阅读 · 0 评论