摘要:
二叉查找树(BST,binary search tree) 概述 二叉查找树是一种建立在一个数组(序列)上并用于对其的高效查找的二叉树。 满足以下条件的一棵树是二叉查找树: 空树是二叉查找树。 二叉查找树的任意一棵子树还是一个二叉查找树。 二叉查找树的每一个节点都对应着原数组的某个节点(并存储相应的 阅读全文
posted @ 2023-01-15 11:47
未欣
阅读(45)
评论(0)
推荐(0)
摘要:
素数与同余 素数个数定理 记 $\leqslant x$ 的素数个数为 $\pi(x)$,则有 $\pi(x)\sim\dfrac{x}{\ln x}$。 不会证。微积分? 数列 Fibonacci 数列 $$\gcd(F_n,F_m)=F_{\gcd(n,m)}$$ 证明如下: 定理 $1$:$\ 阅读全文
posted @ 2023-01-15 10:44
未欣
阅读(54)
评论(0)
推荐(0)
摘要:
概述 博弈论研究的主要是具有竞争或对抗性质的对象,在一定规则下产生的各种行为。 在 OI 中,其的表现主要是两个足够聪明的人(即总是做出最优决策)按某种规则进行一个游戏,对不同的初始局面研究胜负情况。 通常我们使用以下两个维度来划分游戏:公平/非公平,正常/反常。但我们先不讨论它们的区别,我们在定义 阅读全文
posted @ 2023-01-15 10:44
未欣
阅读(332)
评论(0)
推荐(0)
摘要:
概率 概述 概率即随机事件出现的可能性大小。 性质 概率满足贝叶斯公式,但这和 OI 没啥关系。 对于相互独立的事件,概率满足加法原理和乘法原理。 这里的加法原理指求多个事件至少发生一个的概率,乘法原理指某些事件同时发生的概率。 对于独立事件,可以表示为:$P(B\mid A)=P(A),P(A\t 阅读全文
posted @ 2023-01-15 10:41
未欣
阅读(166)
评论(0)
推荐(0)
摘要:
卡特兰数 卡特兰数解决的是形如步步合法的方案数问题。具体地,第 \(n\) 个卡特兰数 \(H_n\) 对应着长为 \(2n\) 的合法括号序列的方案数,或者从 \((0,0)\) 走到 \((n,n)\) 而一直在 \(l:y=x\) 下方(包含)的方案数,或者由 \(1,-1\) 组成的,长为 阅读全文
posted @ 2023-01-15 10:40
未欣
阅读(24)
评论(0)
推荐(0)
摘要:
概述 容斥原理是正难则反思想的实践产物。(23.1.15 upd:存疑) 即,在正向求解问题过于困难时,考虑逆向求出不合法方案数,然后用总方案数减去以得到合法方案数。 大体上,可以分为以下两类: 子集容斥 一般的容斥原理指的就是子集容斥。其是如下的一种容斥: 不妨称“合法”为满足 \(k\) 个条件 阅读全文
posted @ 2023-01-15 10:39
未欣
阅读(443)
评论(0)
推荐(1)
摘要:
BSGS(大步小步法) BSGS 可以在 $O(\sqrt{p})$ 的时间内求解满足 $a^x\equiv b\pmod p$ 的 $x$,其中 $a\perp p,x>0$。 实现原理: 尝试进行和整除分块异曲同工的变换。$a^x\equiv b\Leftrightarrow a^{k\time 阅读全文
posted @ 2023-01-15 10:37
未欣
阅读(49)
评论(0)
推荐(0)
摘要:
扩展欧拉定理 $$ a^b\equiv \begin{cases} a^{b \bmod \varphi(m)} & (a,m)=1\ a^b & (a,m)\neq 1,b<\varphi(m)\ a^{b\bmod\varphi(m)+\varphi(m)} & (a,m)\neq 1,,b\g 阅读全文
posted @ 2023-01-15 10:37
未欣
阅读(61)
评论(0)
推荐(0)
摘要:
定义 群是由一个集合 $G$ 和一个作用于 $G$ 上元素的运算 $\ast$ 所组成的,满足如下性质的代数结构(有时会略去封闭性): 封闭性:$\forall a,b\in G,a\ast b\in G$。 结合律:$\forall a,b,c\in G,(a\ast b)\ast c=a\ast 阅读全文
posted @ 2023-01-15 10:35
未欣
阅读(145)
评论(0)
推荐(0)
摘要:
运算律 与或异或分别满足交换律和结合律,但有两种同时出现时好像就都不满足了。 异或 异或的逆运算是它本身(参看各种解怪题选择性报告中树上异或路径)。 从这一性质出发,可以有一个推论:如果只考虑异或路径长度,那么图上的许多边是等价的。 譬如异或边生成树问题,使用类 Kruskal 算法(这里指逐渐加边 阅读全文
posted @ 2023-01-15 10:33
未欣
阅读(39)
评论(0)
推荐(0)
摘要:
概述 遗传算法是一种模拟演化的近似算法。 顾名思义,它模拟大量的样本,周期性地繁衍、遗传、变异、筛选。 “状态”有时在遗传算法中是对象的一个属性。 思路 周期性地将从旧有的样本中选取较优的(譬如前 $10%$),以它们为基础生成大量的新样本。 如果想要制造更好的随机性,可以考虑从不那么优的样本中也随 阅读全文
posted @ 2023-01-15 10:31
未欣
阅读(25)
评论(0)
推荐(0)
摘要:
概述 模拟退火是一种模拟物理学中材料退火现象的近似算法。 在物理的退火过程中,随着温度的逐渐降低,各粒子的能量会趋向性地稳定在最小值附近(但也有概率反常升高)。 于是我们尝试构建一种算法来模拟退火过程,对于每个状态,其估价函数越好,“能量”越低,反之亦然。 而温度就是体系活跃程度,即愿意改变状态的程 阅读全文
posted @ 2023-01-15 10:30
未欣
阅读(161)
评论(0)
推荐(0)
摘要:
概述 爬山算法是一种基于局部择优进行转移的近似算法。 具体来讲,它尝试利用深度优先搜索的反馈信息,来将搜索过程从盲目的变为启发性的,从而获得效率上的提高(和正确性上的降低)。 说人话就是,尽管我们不知道最优状态,但我们根据当前的信息,尽可能地判断出可达的所有状态(可能很宽泛)中,哪个期望意义下(可能 阅读全文
posted @ 2023-01-15 10:29
未欣
阅读(268)
评论(0)
推荐(0)
摘要:
概述 现实是复杂而困难的。 很多问题是 NP 的。 同样很多的问题我们连它们是不是 NP 都不知道。 更多的问题我们甚至无法把它归约到某种逻辑学的形式上,更无从谈起了。 但是,我们还是想知道。我们还是想知道: 这个命题是否很可能/很不可能是真的? 这个问题的足够优秀的解/决策集是怎样的? 于是我们考 阅读全文
posted @ 2023-01-15 10:28
未欣
阅读(52)
评论(0)
推荐(0)
摘要:
概述 随机探测通过用随机的探针测试某个黑箱,来获得该黑箱高度可能的状态。 太抽象?没关系。就来例题。 例题 测素 给定一个数,判断它是否是质数。 我们知道,由费马小定理,$p$ 是质数是 $\forall x<p,x^{p-1}=1$ 的充分条件。 尽管这不必要,但事实上我们可以期望 $\foral 阅读全文
posted @ 2023-01-15 10:26
未欣
阅读(50)
评论(0)
推荐(0)
摘要:
概述 随机选择通过随机地取总数据的某一部分,来尝试着获取总体数据或总体数据的代表性部分的信息,恰如抽样调查。 例题 CodeChef MSTONE 题意:给出落在 $7$ 条直线上的 $n$ 个点(有些点可能是交点),求点数最多的那条直线上的点数。 数据范围: $T\leqslant 30$。 $n 阅读全文
posted @ 2023-01-15 10:25
未欣
阅读(219)
评论(0)
推荐(0)
摘要:
概述 如果元素满足某种序,那么在排序后我们可以直接得到答案。但事实上,大部分情况下没有这么优美的结论。 虽然如此,我们还是可以猜测将元素按某种逻辑排序后,答案的来源(可能是序列中的某几个元素)不会相距太远。 故我们可以用某种逻辑较随机地多次排序,以期望获得高度近似的答案。不过,正确率就...不可知了 阅读全文
posted @ 2023-01-15 10:24
未欣
阅读(74)
评论(0)
推荐(0)
摘要:
概述 某些题目的数据,如果顺序随机,将会有非常美妙的结论。 但显然,除非写了“保证数据随机”(事实上,没给 generator 的随机都可以认为是构造...),否则出题人不会这样给数据。 此时就要考虑将数据重排,以获得较优的效果。 如何随机打乱? 给出一种均匀随机的打乱算法及证明: template 阅读全文
posted @ 2023-01-15 10:23
未欣
阅读(66)
评论(0)
推荐(0)
摘要:
概述 强化反复是一种随机化思想。 具体来讲,有时题目中的限制过于复杂,无法处理或处理的复杂度不可接受。 此时可以考虑通过随机化地加强限制获得一个较可做的条件,然后多次反复,只要有一次恰好是答案就算成功。 注意,这种“加强限制”指的是将原限制简化规约到某个较强的限制上,必须保证对于所有弱限制下的可能解 阅读全文
posted @ 2023-01-15 10:20
未欣
阅读(26)
评论(0)
推荐(0)
摘要:
强化反复 随机打乱 随机排序 随机选择 随机探测 阅读全文
posted @ 2023-01-15 10:18
未欣
阅读(18)
评论(0)
推荐(1)
摘要:
LCA 与树上差分 轻重链剖分 长链剖分 树分治 阅读全文
posted @ 2023-01-15 10:13
未欣
阅读(18)
评论(0)
推荐(0)
摘要:
概述 树分治通过树的唯一连通性质,递归地求解树上路径(主要是路径长度)相关的问题。 树分治主要包括点分治和边分治。我只会点分治。 点分治 点分治通过选取点作为分割来求解树上路径问题。 较具体地说,如果我们选定一个关键点 $key$ 来分割当前处理的(子)树,那么路径可以分为以下两种: 过 $key$ 阅读全文
posted @ 2023-01-15 10:12
未欣
阅读(67)
评论(0)
推荐(0)
摘要:
概述 分治优化常常在 dp 的转移有某种单向单调性时使用,通过类似整体二分的结构,确保每个决策点只在一条链上出现,从而加速转移。一般这种分治优化也有对应的二分栈形式,区别仅在于逆推和顺推。此部分在四边形不等式优化一节。 分治优化本身还是一种非常有趣的 dp 实现方式。这一部分...我还不是非常了解, 阅读全文
posted @ 2023-01-15 10:11
未欣
阅读(107)
评论(0)
推荐(0)
摘要:
概述 线段树分治通过将信息下放到时间上的某一段,利用欧拉环游序的特性,高效地离线处理加删问题。 简单来说,对于某个元素 \(x\),设其生命周期为 \([L,R]\)(即其在 \([L,R]\) 期间存在),则将其下放到线段树上的对应段。 在全部信息离线完毕后,对线段树进行 dfs,利用欧拉环游序或 阅读全文
posted @ 2023-01-15 10:10
未欣
阅读(63)
评论(0)
推荐(0)
摘要:
概述 CDQ 的本质好像是付 \(\log\) 解一维限制,付几个解几个,但是只能在一维上保序... 大概就是,不断地把有序的维移动。譬如三维偏序的 cdq 套 cdq,首先让第一维有序,然后把序转到第二维上,此时第一维会失序所以要预先标记每个点在第一维上在左/右,然后把序转到第三维上,在转序的过程 阅读全文
posted @ 2023-01-15 10:09
未欣
阅读(42)
评论(0)
推荐(0)
摘要:
概述 纯粹分治是分治思想最纯粹,最朴实,最本质?的应用。 我不太会描述...一个典型是平面分治计数。还是看例题吧... 例题 Public NOIP Round #3 数圈圈 题意:求一个二维矩阵中的圈的数量。所谓圈,就是字母全部相同的一个矩形壳。 数据范围:$n,m\leqslant 2\time 阅读全文
posted @ 2023-01-15 10:08
未欣
阅读(29)
评论(0)
推荐(0)
摘要:
概述 倍增是基于二进制的一种...预处理?思想。 具体来讲,很多时候想要预处理全范围是不可行的,但我们可以利用二进制能简洁地表示出任何数的特性,做步长为二的整数次幂的预处理,然后由它即时计算任意长度的值。($O(n^2)-O(1)\to O(n\log)-O(\log)$,复杂度平衡...?) 二分 阅读全文
posted @ 2023-01-15 10:07
未欣
阅读(45)
评论(0)
推荐(0)
摘要:
概述 二分法是解决如下最优化问题的利器: 解具有某种意义上的单调性。例如,取值单调,或可行性单调(即可行/不可行的分别是问题边界开始的连续一段)。 解不容易直接求出,但判定一个解是否合法较为容易。 此时则可以二分:维护最优区间,每次判定其中点是否合法,若是则舍弃左区间,否则舍弃右区间(这里我们认为右 阅读全文
posted @ 2023-01-15 10:04
未欣
阅读(116)
评论(0)
推荐(0)
摘要:
双指针 不想写概述。 CF1788D Moving Dots 题意略。 赛时一直在考虑怎么对总集合点数反演,即设法做 dp 如 $f_{i,j}$ 表示考虑完前 $i$ 个有 $j$ 个集合点的方案数。显然这东西做不了,它的后效性强制它再加两维(上一个选的是啥,上上个选的是啥,好像还需要上上个的方向 阅读全文
posted @ 2023-01-15 10:04
未欣
阅读(75)
评论(0)
推荐(0)
摘要:
排序算法 计数排序 计数排序是一种计算每个数字出现次数后做值域上的前缀和以对各元素排序的排序方式。 计数排序是一种非比较排序,即不基于比较的排序。计数排序是稳定的。 具体实现:依次枚举每个元素,将其丢进其关键字对应的桶里(这些桶的管辖范围都是 $1$,也可以认为计数排序就是桶排序的退化)。全部放置完 阅读全文
posted @ 2023-01-15 10:02
未欣
阅读(59)
评论(0)
推荐(0)
摘要:
数据类型 显而易见地,越小的型的运算越快。 大体来讲 long long 的常数比 int 大一倍,但 __int128 的比 long long 大一倍不止(因为没有 128 位机,故 __int128 的实现是“不自然”的)。 short 和 char 的表现特别差,不论什么环境。原因?它们在任 阅读全文
posted @ 2023-01-15 10:00
未欣
阅读(72)
评论(0)
推荐(0)
摘要:
朴素分析 直接暴力统计计算次数。 摊还分析 聚合分析 核心思想:算出总复杂度然后均摊。 例: 1.“栈”:维护一个栈,支持栈顶插入和一次弹出所有元素。 显然 $n$ 次操作至多 $n$ 个点插入,从而最多有 $n$ 个点弹出。 总复杂度 $O(2n)$,均摊复杂度 $O(2)$。 2.$vector 阅读全文
posted @ 2023-01-15 10:00
未欣
阅读(42)
评论(0)
推荐(0)
摘要:
数据类型 整型:原码、反码与补码 首先把整数的真实数值称为真值。 原码:最高位表示符号(\(0=+,1=-\)),后面是其绝对值的二进制表示。 反码:正数的反码等于原码,负数的反码等于原码除符号位外取反所得。\(0\) 见下。 补码:正数和 \(0\) 的补码等于原码,负数的补码等于其反码 \(+1 阅读全文
posted @ 2023-01-15 09:58
未欣
阅读(48)
评论(0)
推荐(0)
摘要:
语法 复杂度分析 常数优化 阅读全文
posted @ 2023-01-15 09:57
未欣
阅读(38)
评论(0)
推荐(0)

浙公网安备 33010602011771号