随笔分类 - 算法总结
摘要:发现自己根本没有 SAM 基础,所以想补一篇学习笔记。 SAM SAM 是一个可以接受字符串 \(s\) 的所有后缀的最小 \(DFA\)(确定性有限状态自动机)。不过他最大的用处和后缀数组一样,都是用来处理子串信息的。既然他是 \(DFA\),那他就是 \(DAG\),下文的 \(DAG\) 都代
阅读全文
摘要:自适应 Simpson 积分法,是一种计算一段区间内,形态奇怪的函数和的算法,例如面积并和难以直接用通项公式计算的函数。 Simpson 积分 我们都知道,求解微积分需要求解一个导数的原函数,但这显然更难,比如说 \(f(x)=\dfrac{cx+d}{ax+b}\) 这个函数,就相当难以求解原函数
阅读全文
摘要:min-max 容斥,又名最值反演(我其实更喜欢后面这个名字),是一种常用的反演思想。 引入 在皇后游戏一题中,我们曾经证明过 \(\max(a,b)-a-b=-\min(a,b)\)。 我们尝试推广亿下下这个式子,就会得到两条反演公式: \[\max(S)=\sum_{T\subseteq S}(
阅读全文
摘要:我们知道,FFT 和 NTT 可以用来解决下面这种问题: \[c_k=\sum_{i+j=k}a_ib_j \]不过,这并不是卷积的全部形态,比如下面这种: \[c_k=\sum_{i*j=k}a_ib_j \]其中 \(*\) 代表一种位运算。 面对这种位运算类型的卷积,我们也有别样的方法,那就是
阅读全文
摘要:下降幂 注:这里其实还有上升幂。 定义 下降幂:\(x^{\underline{k}}=\prod\limits_{i=x-k+1}^xi=\frac{x!}{(x-k)!}\) 上升幂:\(x^{\overline{k}}=\prod\limits_{i=x}^{x+k-1}i=\frac{(x+
阅读全文
摘要:注:由于发现 FWT 解决的问题和 FFT,NTT 差别有点大,加之 FMT 的存在,本文就只解决 FFT 和 NTT,剩下两个放在别的算法总结里讲。 多项式一向是算法竞赛中相当博大精深的东西,作为一个蒟蒻,我将会以最大的努力完成这篇记录,以防自己以后看不懂qwq。 FFT(快速傅里叶变换) FFT
阅读全文
摘要:学原根发现拔山盖世算法忘光了,干脆一块儿写了吧。 \(BSGS\) 算法 \(BSGS\) 算法,又名拔山盖世算法、北上广深算法。他解决的问题如下: 求解最小的可行的 \(k\),满足 \(a^k\equiv b(\bmod p)\),其中保证 \(\gcd(a,p)=1\)。 容易想到暴力枚举,时
阅读全文
摘要:首先,\(LCT\) 一般指疏松结缔组织。 疏松结缔组织是指一种柔软而富有弹性的结缔组织。主要填充在各器官或组织间的间隙中,如剥制动物标本时,将皮肤拉开,就可见到薄而透明的疏松结缔组织。 对不起,刚才生物同志走错片场了。 \(LCT(Link\ Cut\ Tree)\),是一种可以解决动态树问题的数
阅读全文
摘要:注:\(K-D\ Tree\) 的应用中由于大量用到了 \(dfs\) 剪枝,所以通常不是正解。但是由于他相当好写,而且通常跑的不慢,所以也广为流传。感觉像是一种半骗分思路。下文简称其为 \(KDT\)。 一、\(K-D\ Tree\) 我们都知道 \(2D,3D\) 表示二维、三维,所以 \(KD
阅读全文
摘要:一、概念 线性基实际上就是维护了一个数组 \(p\),满足 \(p_i\) 在二进制下的最高位为第 \(i\) 位。 二、实现 现在我们有一个数组 \(a\),我们要构造他的线性基 \(p\)。 每次插入 \(a_i\) 时,我们都从高位往低位遍历,用以寻找第一个空位插入它。当然,我们也不能直接把原
阅读全文
摘要:本文有着大量的感性理解,或没有证明的性质。鄙人尚菜,还请各位看官多多包涵。 一、置换 实际上可以理解为对集合的每个元素一个新的标号,满足这个标号集合与原集合一一对应。 如集合 \(X=\{x_1,x_2,\dots,x_n\}\),他的置换就可以表示为:\(\sigma=(_{x_{p_1}\ \
阅读全文
摘要:一、线段树分裂 类似于 \(FHQ-Treap\) 的方式,下给出模板题代码。 //Luogu5494 #include<bits/stdc++.h> #define int long long using namespace std; const int N=2e5+5,M=5e6+5; int
阅读全文
摘要:1.什么是可持久化 对应的具体问题就是给你一个可以用普通数据结构(如线段树、平衡树等)解决的问题,但是操作可能会在历史版本上进行。 由于主席树笔者曾经写过,所以这里跳过。 2.可持久化平衡树 思想很简单。众所周知,\(FHQ-Treap\) 是个好东西,他就可以用来写可持久化平衡树。 考虑 \(sp
阅读全文
摘要:前言 在日常的学习生活中,我们经常会遇到如下问题: 维护一个数据结构,可以插入或删除一个数、求该数排名、求排名给定的数、求一个数的前驱后继。 这种情况下,权值线段树可以不优雅的解决这个问题。为了找到更优雅、适应性更强的算法,人们发明了平衡树。平衡树已经渗透入大部分 \(OIer\) 的代码中。对于一
阅读全文
摘要:之前曾经写过,但是 \(latex\) 弄不下来,直接截屏了……
阅读全文
摘要:众所周知,\(Li\ Chao\ Tree=LCT=Link\ Cut\ Tree\)。 在我们的日常学习生活中,经常会遇到以下问题: 维护一种数据结构,要求: 添加一条线段 求解 \(x=k\) 与所有线段交点中,\(y\) 最大的一个。 众所周知,线段会影响一个区间的答案。区间取 \(max+\
阅读全文
摘要:龟速乘+快速乘+素性测试($Miller-Rabin$)。
阅读全文
摘要:虽然当时文风很2,但是觉得写的蛮好的,就在这里贴一下吧。 最近学了分块(太难想了 \(qwq\) )和莫队(太神奇了 \(0w0\) ),写一个阶段性总结~ 分块 总所周知,分块是一种神奇的暴力,用 \(O(n\sqrt{n})\) 的较为优秀的时间复杂度,解决线段树与树状数组不能解决之事 那么,他
阅读全文