快速傅里叶变换(FFT) 有趣啊,都已经到NOI的难度了,救命 首先,我们先讲述一下前置知识.已经明白的读者请移步后文 虚数 定义:\(z = a + bi\),其中 \(a, b \in R\ \ i = \sqrt{-1}\) 运算原则: \[\begin{aligned} (a+bi) + (c+di) &= (a+c) + (b+d)i \\ (a+bi)(c+di) &= (ac - bd) + (ad + bc)i \\ \cfrac {(a+bi)}{(c+di)} &…
一个数学不好的菜鸡的快速沃尔什变换(FWT)学习笔记 曾经某个下午我以为我会了FWT,结果现在一丁点也想不起来了--看来"学"完新东西不经常做题不写博客,就白学了 = = 我没啥智商 ,网上的FWT博客我大多看不懂,下面这篇博客是留给我我再次忘记FWT时看的,所以像我一样的没智商选手应该也能看懂!有智商选手更能看懂咯! (写得非常匆忙,如有任何错误请在评论区指正!TAT) 什么是FWT FWT是用来快速做位运算卷积的.位运算卷积是什么?给出两个数组\(A\)和\(B\)(长度相等且是2…
[学习笔鸡]快速沃尔什变换FWT OR的FWT 快速解决: \[ C[i]=\sum_{j|k=i} A[j]B[k] \] FWT使得我们 \[ FWT(C)=FWT(A)*FWT(B) \] 其中\(*\)是点积,就是对应位置乘起来. 而对于\(orFWT\), \[ C'[i]=FWT(C)[i]=\sum_{j\subseteq i}C[j] \] 那么证明一下: \[ \begin{array} &C'[i]&=\sum_{j\subseteq i} C[j] \\ &=…
快速沃尔什变换\(FWT\) 是一种可以快速完成集合卷积的算法. 什么是集合卷积啊? 集合卷积就是在集合运算下的卷积.比如一般而言我们算的卷积都是\(C_i=\sum_{j+k=i}A_j*B_k\),而集合卷积计算的就是\(C_i=\sum_{j\otimes k=i}A_j*B_k\),其中\(\otimes\)是一种集合运算,可以是与.或.异或. 类似于快速傅里叶变换\(FFT\),\(FWT\)也需要寻求一种变换方式\(FWT(A)\),使\(FWT(C)=FWT(A)*FWT(B)\)…
也许更好的阅读体验 本文主要内容是对武汉市第二中学吕凯风同学的论文<集合幂级数的性质与应用及其快速算法>的理解 定义 集合幂级数 为了更方便的研究集合的卷积,引入集合幂级数的概念 集合幂级数也是形式幂级数的一种,只是集合的一种表现形式,无需考虑收敛或发散的含义 定义一个集合 \(S\) 的集合幂级数为 \(f\) ,那么我们就可以把集合 \(S\) 表示为如下形式 \(\begin{aligned}f=\sum _{T\subseteq S}f_{T}\cdot x^{T}\end{align…
\(Johnson\)算法学习笔记. 在最短路的学习中,我们曾学习了三种最短路的算法,\(Bellman-Ford\)算法及其队列优化\(SPFA\)算法,\(Dijkstra\)算法.这些算法可以快速的求出单源最短路,即一个源点的最短路. 而\(Floyd\)算法,这个及其简短的算法,可以以\(O(n^3)\)的复杂度算出任意一对点之间的最短路. 我们发现,\(floyd\)算法的时间复杂度和边的数量没有多大的关系,也就是说,\(floyd\)使用的最优条件是稠密图. 那么问题来了,如果我们面…
倍增 目录 倍增 查找 洛谷P2249 重点 变式练习 快速幂 ST表 扩展 - 运算 扩展 - 区间 变式答案 倍增,字面意思即"成倍增长" 他与二分十分类似,都是基于"2"的划分思想 那么具体是怎么样,我们以一个例子来看 ST表才是文章的重点 QwQ 查找 洛谷P2249 依据题面,我们知道这是一个单调序列,当然可以通过二分的方式来寻找答案,但是既然我们这里讲倍增,那么就用倍增来写吧! 首先,我们先贴上核心代码 void find(int k) { int i…
前言 Miller-Rabin 算法用于判断一个数 \(p\) 是否是质数,若选定 \(w\) 个数进行判断,那么正确率约是 \(1-\frac{1}{4^w}\) ,时间复杂度为 \(O(\log p+w\log p)\).(我的实现) Pollard-Rho 算法可以在期望 \(O(n^{\frac{1}{4}})\) 的时间复杂度内找到合数 \(n\) 的某一个非平凡的(即既不是 \(1\),也不是它本身的)因子. 下文中用 \(\mathbb{P}\) 来表示质数集合. Miller-R…
扩展中国剩余定理 讲解扩展之前,我们先叙述一下普通的中国剩余定理 中国剩余定理 中国剩余定理通过一种非常精巧的构造求出了一个可行解 但是毕竟是构造,所以相对较复杂 \[\begin{cases} x \equiv a_1 \pmod{m_1} \\ x \equiv a_2 \pmod{m_2} \\ x \equiv a_3 \pmod{m_3} \\ \dots \\ x \equiv a_n \pmod{m_n} \end{cases} \] 对于上述同余方程组,首先需要满足 \(m_1,…
AC自动机 前置知识: 字典树:可以参考我的另一篇文章 算法学习笔记(15): Trie(字典树) KMP:可以参考 KMP - Ricky2007,但是不理解KMP算法并不会对这个算法的理解产生影响. 目录 AC自动机 使用场景 算法思想与流程 匹配的判断 失配树的应用 对状态的理解 使用场景 AC自动机是一种著名的多模式匹配算法. 可以完成类似于KMP算法的工作,但是由单字符串的匹配变成了多字符串的匹配. 一般来说,会有很多子串,和一个母串.问题常是求字串在母串中的出现情况(包括位置,次数,…