摘要:
二叉查找树(BST,binary search tree) 概述 二叉查找树是一种建立在一个数组(序列)上并用于对其的高效查找的二叉树。 满足以下条件的一棵树是二叉查找树: 空树是二叉查找树。 二叉查找树的任意一棵子树还是一个二叉查找树。 二叉查找树的每一个节点都对应着原数组的某个节点(并存储相应的 阅读全文
摘要:
概述 博弈论研究的主要是具有竞争或对抗性质的对象,在一定规则下产生的各种行为。 在 OI 中,其的表现主要是两个足够聪明的人(即总是做出最优决策)按某种规则进行一个游戏,对不同的初始局面研究胜负情况。 通常我们使用以下两个维度来划分游戏:公平/非公平,正常/反常。但我们先不讨论它们的区别,我们在定义 阅读全文
摘要:
素数与同余 素数个数定理 记 $\leqslant x$ 的素数个数为 $\pi(x)$,则有 $\pi(x)\sim\dfrac{x}{\ln x}$。 不会证。微积分? 数列 Fibonacci 数列 $$\gcd(F_n,F_m)=F_{\gcd(n,m)}$$ 证明如下: 定理 $1$:$\ 阅读全文
摘要:
概率 概述 概率即随机事件出现的可能性大小。 性质 概率满足贝叶斯公式,但这和 OI 没啥关系。 对于相互独立的事件,概率满足加法原理和乘法原理。 这里的加法原理指求多个事件至少发生一个的概率,乘法原理指某些事件同时发生的概率。 对于独立事件,可以表示为:$P(B\mid A)=P(A),P(A\t 阅读全文
摘要:
待补。 阅读全文
摘要:
概述 容斥原理是正难则反思想的实践产物。(23.1.15 upd:存疑) 即,在正向求解问题过于困难时,考虑逆向求出不合法方案数,然后用总方案数减去以得到合法方案数。 大体上,可以分为以下两类: 子集容斥 一般的容斥原理指的就是子集容斥。其是如下的一种容斥: 不妨称“合法”为满足 $k$ 个条件,并 阅读全文
摘要:
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 阅读全文
摘要:
扩展欧拉定理 $$ 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 阅读全文
摘要:
定义 群是由一个集合 $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 阅读全文
摘要:
运算律 与或异或分别满足交换律和结合律,但有两种同时出现时好像就都不满足了。 异或 异或的逆运算是它本身(参看各种解怪题选择性报告中树上异或路径)。 从这一性质出发,可以有一个推论:如果只考虑异或路径长度,那么图上的许多边是等价的。 譬如异或边生成树问题,使用类 Kruskal 算法(这里指逐渐加边 阅读全文
摘要:
概述 遗传算法是一种模拟演化的近似算法。 顾名思义,它模拟大量的样本,周期性地繁衍、遗传、变异、筛选。 “状态”有时在遗传算法中是对象的一个属性。 思路 周期性地将从旧有的样本中选取较优的(譬如前 $10%$),以它们为基础生成大量的新样本。 如果想要制造更好的随机性,可以考虑从不那么优的样本中也随 阅读全文
摘要:
概述 模拟退火是一种模拟物理学中材料退火现象的近似算法。 在物理的退火过程中,随着温度的逐渐降低,各粒子的能量会趋向性地稳定在最小值附近(但也有概率反常升高)。 于是我们尝试构建一种算法来模拟退火过程,对于每个状态,其估价函数越好,“能量”越低,反之亦然。 而温度就是体系活跃程度,即愿意改变状态的程 阅读全文
摘要:
概述 爬山算法是一种基于局部择优进行转移的近似算法。 具体来讲,它尝试利用深度优先搜索的反馈信息,来将搜索过程从盲目的变为启发性的,从而获得效率上的提高(和正确性上的降低)。 说人话就是,尽管我们不知道最优状态,但我们根据当前的信息,尽可能地判断出可达的所有状态(可能很宽泛)中,哪个期望意义下(可能 阅读全文
摘要:
概述 现实是复杂而困难的。 很多问题是 NP 的。 同样很多的问题我们连它们是不是 NP 都不知道。 更多的问题我们甚至无法把它归约到某种逻辑学的形式上,更无从谈起了。 但是,我们还是想知道。我们还是想知道: 这个命题是否很可能/很不可能是真的? 这个问题的足够优秀的解/决策集是怎样的? 于是我们考 阅读全文
摘要:
概述 随机探测通过用随机的探针测试某个黑箱,来获得该黑箱高度可能的状态。 太抽象?没关系。就来例题。 例题 测素 给定一个数,判断它是否是质数。 我们知道,由费马小定理,$p$ 是质数是 $\forall x<p,x^{p-1}=1$ 的充分条件。 尽管这不必要,但事实上我们可以期望 $\foral 阅读全文
摘要:
概述 随机选择通过随机地取总数据的某一部分,来尝试着获取总体数据或总体数据的代表性部分的信息,恰如抽样调查。 例题 CodeChef MSTONE 题意:给出落在 $7$ 条直线上的 $n$ 个点(有些点可能是交点),求点数最多的那条直线上的点数。 数据范围: $T\leqslant 30$。 $n 阅读全文
摘要:
概述 如果元素满足某种序,那么在排序后我们可以直接得到答案。但事实上,大部分情况下没有这么优美的结论。 虽然如此,我们还是可以猜测将元素按某种逻辑排序后,答案的来源(可能是序列中的某几个元素)不会相距太远。 故我们可以用某种逻辑较随机地多次排序,以期望获得高度近似的答案。不过,正确率就...不可知了 阅读全文
摘要:
概述 某些题目的数据,如果顺序随机,将会有非常美妙的结论。 但显然,除非写了“保证数据随机”(事实上,没给 generator 的随机都可以认为是构造...),否则出题人不会这样给数据。 此时就要考虑将数据重排,以获得较优的效果。 如何随机打乱? 给出一种均匀随机的打乱算法及证明: template 阅读全文
摘要:
概述 强化反复是一种随机化思想。 具体来讲,有时题目中的限制过于复杂,无法处理或处理的复杂度不可接受。 此时可以考虑通过随机化地加强限制获得一个较可做的条件,然后多次反复,只要有一次恰好是答案就算成功。 注意,这种“加强限制”指的是将原限制简化规约到某个较强的限制上,必须保证对于所有弱限制下的可能解 阅读全文
摘要:
强化反复 随机打乱 随机排序 随机选择 随机探测 阅读全文