01 2023 档案
摘要:概述 结合律优化通过将冗长的转移用结合律压缩,高效实现...取某一段的 dp 结果?也可以带修。 实现原理 首先,对应 DP 要满足结合律,即各部分转移的形式相互独立。典型的反例譬如求可行性的背包问题。 然后上线段树。视情况不同,可能是基于矩阵的 DDP 或纯粹靠复杂线段树的...线段树优化 DP?
阅读全文
摘要:概述什么的等我有空再补。 用的时候直接开一个 myhash a,然后像普通的 unordered_map 一样 a[x] 就可以了(&[] 重定义的功劳)。 struct myhash{ struct data{ ull key; int val,nex; data(){} data(ull _ke
阅读全文
摘要:概述 数位 DP 是以从数学意义上的位数出发来 DP 为特点的一类 DP。 下述特点中的一部分可能对计数类以外的不适用。 状态设计通常包含“考虑到第几位”和“是否已经比上界小”。 初始化通常为 或 ,视从高位向低位或从低位向高位而
阅读全文
摘要:二叉查找树(BST,binary search tree) 概述 二叉查找树是一种建立在一个数组(序列)上并用于对其的高效查找的二叉树。 满足以下条件的一棵树是二叉查找树: 空树是二叉查找树。 二叉查找树的任意一棵子树还是一个二叉查找树。 二叉查找树的每一个节点都对应着原数组的某个节点(并存储相应的
阅读全文
摘要:概述 博弈论研究的主要是具有竞争或对抗性质的对象,在一定规则下产生的各种行为。 在 OI 中,其的表现主要是两个足够聪明的人(即总是做出最优决策)按某种规则进行一个游戏,对不同的初始局面研究胜负情况。 通常我们使用以下两个维度来划分游戏:公平/非公平,正常/反常。但我们先不讨论它们的区别,我们在定义
阅读全文
摘要:概率 概述 概率即随机事件出现的可能性大小。 性质 概率满足贝叶斯公式,但这和 OI 没啥关系。 对于相互独立的事件,概率满足加法原理和乘法原理。 这里的加法原理指求多个事件至少发生一个的概率,乘法原理指某些事件同时发生的概率。 对于独立事件,可以表示为:$P(B\mid A)=P(A),P(A\t
阅读全文
摘要:概述 容斥原理是正难则反思想的实践产物。(23.1.15 upd:存疑) 即,在正向求解问题过于困难时,考虑逆向求出不合法方案数,然后用总方案数减去以得到合法方案数。 大体上,可以分为以下两类: 子集容斥 一般的容斥原理指的就是子集容斥。其是如下的一种容斥: 不妨称“合法”为满足 个条件,并
阅读全文
摘要:BSGS(大步小步法) BSGS 可以在 的时间内求解满足 的 ,其中 。 实现原理: 尝试进行和整除分块异曲同工的变换。$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
阅读全文
摘要:定义 群是由一个集合 和一个作用于 上元素的运算 所组成的,满足如下性质的代数结构(有时会略去封闭性): 封闭性: 。 结合律:$\forall a,b,c\in G,(a\ast b)\ast c=a\ast
阅读全文
摘要:运算律 与或异或分别满足交换律和结合律,但有两种同时出现时好像就都不满足了。 异或 异或的逆运算是它本身(参看各种解怪题选择性报告中树上异或路径)。 从这一性质出发,可以有一个推论:如果只考虑异或路径长度,那么图上的许多边是等价的。 譬如异或边生成树问题,使用类 Kruskal 算法(这里指逐渐加边
阅读全文
摘要:概述 遗传算法是一种模拟演化的近似算法。 顾名思义,它模拟大量的样本,周期性地繁衍、遗传、变异、筛选。 “状态”有时在遗传算法中是对象的一个属性。 思路 周期性地将从旧有的样本中选取较优的(譬如前 ),以它们为基础生成大量的新样本。 如果想要制造更好的随机性,可以考虑从不那么优的样本中也随
阅读全文
摘要:概述 模拟退火是一种模拟物理学中材料退火现象的近似算法。 在物理的退火过程中,随着温度的逐渐降低,各粒子的能量会趋向性地稳定在最小值附近(但也有概率反常升高)。 于是我们尝试构建一种算法来模拟退火过程,对于每个状态,其估价函数越好,“能量”越低,反之亦然。 而温度就是体系活跃程度,即愿意改变状态的程
阅读全文
摘要:概述 爬山算法是一种基于局部择优进行转移的近似算法。 具体来讲,它尝试利用深度优先搜索的反馈信息,来将搜索过程从盲目的变为启发性的,从而获得效率上的提高(和正确性上的降低)。 说人话就是,尽管我们不知道最优状态,但我们根据当前的信息,尽可能地判断出可达的所有状态(可能很宽泛)中,哪个期望意义下(可能
阅读全文
摘要:概述 现实是复杂而困难的。 很多问题是 NP 的。 同样很多的问题我们连它们是不是 NP 都不知道。 更多的问题我们甚至无法把它归约到某种逻辑学的形式上,更无从谈起了。 但是,我们还是想知道。我们还是想知道: 这个命题是否很可能/很不可能是真的? 这个问题的足够优秀的解/决策集是怎样的? 于是我们考
阅读全文
摘要:概述 随机探测通过用随机的探针测试某个黑箱,来获得该黑箱高度可能的状态。 太抽象?没关系。就来例题。 例题 测素 给定一个数,判断它是否是质数。 我们知道,由费马小定理, 是质数是 的充分条件。 尽管这不必要,但事实上我们可以期望 $\foral
阅读全文
摘要:概述 随机选择通过随机地取总数据的某一部分,来尝试着获取总体数据或总体数据的代表性部分的信息,恰如抽样调查。 例题 CodeChef MSTONE 题意:给出落在 条直线上的 个点(有些点可能是交点),求点数最多的那条直线上的点数。 数据范围: 。 $n
阅读全文
摘要:概述 如果元素满足某种序,那么在排序后我们可以直接得到答案。但事实上,大部分情况下没有这么优美的结论。 虽然如此,我们还是可以猜测将元素按某种逻辑排序后,答案的来源(可能是序列中的某几个元素)不会相距太远。 故我们可以用某种逻辑较随机地多次排序,以期望获得高度近似的答案。不过,正确率就...不可知了
阅读全文
摘要:概述 某些题目的数据,如果顺序随机,将会有非常美妙的结论。 但显然,除非写了“保证数据随机”(事实上,没给 generator 的随机都可以认为是构造...),否则出题人不会这样给数据。 此时就要考虑将数据重排,以获得较优的效果。 如何随机打乱? 给出一种均匀随机的打乱算法及证明: template
阅读全文
摘要:概述 强化反复是一种随机化思想。 具体来讲,有时题目中的限制过于复杂,无法处理或处理的复杂度不可接受。 此时可以考虑通过随机化地加强限制获得一个较可做的条件,然后多次反复,只要有一次恰好是答案就算成功。 注意,这种“加强限制”指的是将原限制简化规约到某个较强的限制上,必须保证对于所有弱限制下的可能解
阅读全文
摘要:概述 树分治通过树的唯一连通性质,递归地求解树上路径(主要是路径长度)相关的问题。 树分治主要包括点分治和边分治。我只会点分治。 点分治 点分治通过选取点作为分割来求解树上路径问题。 较具体地说,如果我们选定一个关键点 来分割当前处理的(子)树,那么路径可以分为以下两种: 过
阅读全文
摘要:概述 分治优化常常在 dp 的转移有某种单向单调性时使用,通过类似整体二分的结构,确保每个决策点只在一条链上出现,从而加速转移。一般这种分治优化也有对应的二分栈形式,区别仅在于逆推和顺推。此部分在四边形不等式优化一节。 分治优化本身还是一种非常有趣的 dp 实现方式。这一部分...我还不是非常了解,
阅读全文
摘要:概述 线段树分治通过将信息下放到时间上的某一段,利用欧拉环游序的特性,高效地离线处理加删问题。 简单来说,对于某个元素 ,设其生命周期为 (即其在 期间存在),则将其下放到线段树上的对应段。 在全部信息离线完毕后,对线段树进行 dfs,利用欧拉环游序或者说入出栈序
阅读全文
摘要:概述 CDQ 的本质好像是付 解一维限制,付几个解几个,但是只能在一维上保序... 大概就是,不断地把有序的维移动。譬如三维偏序的 cdq 套 cdq,首先让第一维有序,然后把序转到第二维上,此时第一维会失序所以要预先标记每个点在第一维上在左/右,然后把序转到第三维上,在转序的过程中(
阅读全文
摘要:概述 纯粹分治是分治思想最纯粹,最朴实,最本质?的应用。 我不太会描述...一个典型是平面分治计数。还是看例题吧... 例题 Public NOIP Round #3 数圈圈 题意:求一个二维矩阵中的圈的数量。所谓圈,就是字母全部相同的一个矩形壳。 数据范围:$n,m\leqslant 2\time
阅读全文
摘要:概述 倍增是基于二进制的一种...预处理?思想。 具体来讲,很多时候想要预处理全范围是不可行的,但我们可以利用二进制能简洁地表示出任何数的特性,做步长为二的整数次幂的预处理,然后由它即时计算任意长度的值。( ,复杂度平衡...?) 二分
阅读全文
摘要:概述 二分法是解决如下最优化问题的利器: 解具有某种意义上的单调性。例如,取值单调,或可行性单调(即可行/不可行的分别是问题边界开始的连续一段)。 解不容易直接求出,但判定一个解是否合法较为容易。 此时则可以二分:维护最优区间,每次判定其中点是否合法,若是则舍弃左区间,否则舍弃右区间(这里我们认为右
阅读全文
摘要:双指针 不想写概述。 CF1788D Moving Dots 题意略。 赛时一直在考虑怎么对总集合点数反演,即设法做 dp 如 表示考虑完前 个有 个集合点的方案数。显然这东西做不了,它的后效性强制它再加两维(上一个选的是啥,上上个选的是啥,好像还需要上上个的方向
阅读全文
摘要:排序算法 计数排序 计数排序是一种计算每个数字出现次数后做值域上的前缀和以对各元素排序的排序方式。 计数排序是一种非比较排序,即不基于比较的排序。计数排序是稳定的。 具体实现:依次枚举每个元素,将其丢进其关键字对应的桶里(这些桶的管辖范围都是 ,也可以认为计数排序就是桶排序的退化)。全部放置完
阅读全文
摘要:数据类型 显而易见地,越小的型的运算越快。 大体来讲 long long 的常数比 int 大一倍,但 __int128 的比 long long 大一倍不止(因为没有 128 位机,故 __int128 的实现是“不自然”的)。 short 和 char 的表现特别差,不论什么环境。原因?它们在任
阅读全文
摘要:朴素分析 直接暴力统计计算次数。 摊还分析 聚合分析 核心思想:算出总复杂度然后均摊。 例: 1.“栈”:维护一个栈,支持栈顶插入和一次弹出所有元素。 显然 次操作至多 个点插入,从而最多有 个点弹出。 总复杂度 ,均摊复杂度 。 2.$vector
阅读全文
摘要:数据类型 整型:原码、反码与补码 首先把整数的真实数值称为真值。 原码:最高位表示符号( ),后面是其绝对值的二进制表示。 反码:正数的反码等于原码,负数的反码等于原码除符号位外取反所得。 见下。 补码:正数和 的补码等于原码,负数的补码等于其反码 \(+1
阅读全文
摘要:概述 筛法原本是筛取质数的一种算法。在 OI 中,它被推广到了筛积性函数值。 埃氏筛 枚举每个数,筛去它们的整数倍。 复杂度为 ,证明非常困难,我们从心一下。 埃氏筛有很多 trick,例如只取 的质数来筛,分块筛(这个是时间
阅读全文
摘要:概述 状压 DP 是以状态含有某种意义上的状态压缩为特点的一类 DP。 所谓状态压缩,通常指的是将各个元素的状态从常规的 vector 等编码映射为一个 即抽象的状态。 较为常见的方式是压缩为一个 位 进制数,其中 为元素数, 为每个元素的状态数(中的最大值,
阅读全文
摘要:请善用本博客的另外三个置顶。因为本博客是搬迁来的,而且是一点一点搬过来的,发布时间几乎是毫无意义的东西。 如果有任何 typo,或者目录的结构关系不对,可以的话请务必提醒我!感谢! 可以适度地对各种立了项却没有做/没有做完的东西催更,但不保证有用(咕)。 访问密码?正常版权原因的文章密码都和校内内卷
阅读全文
摘要:概述 自动机上 DP 是在自动机上进行的一类 dp。除此之外,我目前没能提炼出什么共性。 建自动机式问题 典型代表如 。 特点是题目给出了...怎么说呢,题目规定了一个局面自动机,然后要求在该自动机上计数
阅读全文
摘要:概述 拉格朗日插值法(下简称拉插)是一种多项式单点求值的算法。 对于任意的 次多项式,我们可以利用其已知的 个或更多的点唯一确定该多项式的形式,且拥有比高消更为优秀的复杂度。 实现原理 在已知 次多项式 的 个点后,我们可以利用 Gauss 消元
阅读全文
摘要:概述 贪心用于解决最优化问题。 例题之前的都是某次听大牛讲课的产物,可以认为,这一篇目前只是胡乱地把贪心相关的东西堆砌在一起,没有什么应有的逻辑结构。换言之,这没完工,只是建材。 组合问题 考虑给定一个集合 ,对 的子集进行询问。 组合判定 考虑给定一个集合 ,一个限制条件 $P
阅读全文
摘要:欧几里得算法 鉴于后面有很多和 相关的东西,拿这个起手,顺便规定 。 在群论意义下,对于 操作, 是零元,我们这么规定是让 做单位元。 我是真的没地方放了。总不能把这个放数学杂项吧。 $$(a,b)=(a\bmod b,b)(a
阅读全文
摘要:6.5 P1127 词链 题意:给定字符串,前一个尾字母=后一个首字母的可以相连(不重叠并且在中间插一个 .),求字典序最小的相连方式,使得每个字符串恰出现一次。无解输出无解。 数据范围: 。 首先TSP下显然不可解。 注意到一点,这里
阅读全文
摘要:排列组合 定义 排列数 个中选 个,考虑顺序。 。特别地, 可以记为 (全排列)。 从定义来求。 $$A_n^m=n\times (n-1)\times \dots \times (n-m+1)=\dfrac{n!}{(n-m)
阅读全文
摘要:概述 区间 DP 是以 dp 设计从区间出发为特点的一类 dp。 状态设计往往包含 。 初始化通常为 。 转移则不一而同,看下面的详解吧。 实现倒是比较统一,比较喜欢用记搜,毕竟记搜(在不考虑进/退函数开销的情况下)比较快,而且好写。否则需要枚举 。
阅读全文
摘要:概述 本文因为一些后来的修改,大概率有 typo,如果发现了请提醒我谢谢。 树形 DP 是在树上进行的一类 dp,通常有着树形的决策过程。 欧拉环游序式树形 dp,我们在概述中不讨论。 特别地,真换根 dp 的手法本质上也是欧拉环游序式...不过我们不专门谈这个,在欧拉环游序式外的地方,我们把它当做
阅读全文
摘要:概述 线性 DP 并没有明确的定义。 我个人认为,广义的线性 DP 指的是满足以下几个条件的 DP: 存在至少一维可以线性推进; 区间 DP 可以满足这个要求,只要在状态里放 。在这一意义下,区间 DP 是“线性推进的一维为区间长度”的特化线性 DP。 状压 DP 显然不满足,即使状态为
阅读全文
摘要:DP DP 概述 线性 DP 区间 DP 状压 DP 数位 DP 树形 DP 自动机上 DP DP优化 状态优化 缩减状态优化 折半优化 状态复用优化 长链剖分优化 树上启发式合并? 转移优化 决策单调性优化 单调队列优化 斜率优化 王钦石二分优化 四边形不等式优化 转移压缩优化 矩阵快速幂优化 拉
阅读全文
摘要:概述 最大流思想主要用于求解“最多能...”的问题。 更多的我还没想明白。 增广路 若 是网络 中一条连通 的路径,且 ,则称 为一条增广路。 正如二分图最大匹配的增广路一样,网络流中的增广路本质也是带悔贪心。 它的实
阅读全文
摘要:图论基础概念 拓扑序 最短路 生成树 欧拉图 图的连通性 二分图 网络流 树论 图论杂项
阅读全文
摘要:概述 根号分治,是一种对数据进行分治的分治方式。 具体来说,如果所要求进行的过程满足满足大点、小点(一般以根号为分界,因为这样复杂度最平衡)可以使用不同的方式处理,则可以考虑使用根号分治。一般常见的有两种情况: 根号以下的数据的种类很少,可以全部维护之;根号以上的数据,直接暴力的复杂度可接受。典型代
阅读全文
摘要:概述 分治,即“分而治之”,指的是将问题分解为两个或多个相同或相似的子问题,分别解决,然后合并各子问题解获得该问题的解的思想。 应当指出,分治的定义是递归的。各子问题也应该用分治方法解决,除非其是递归边界。 纯粹、CDQ 和优化 DP 也许会需要合并到一起...这取决于... 纯粹分治 CDQ 分治
阅读全文
摘要:概述 吉老师线段树,较正式的名称为 segbeats,是由吉如一发明/整理的使用线段树维护区间最值操作和区间历史问题的方法。 本文绝大部分内容都是抄的论文。 区间最值操作 实现原理 即 。 我们以 操作
阅读全文
摘要:概述 线段树通过在原数组上建一棵二叉树,将原序列不断二分治,以高效地处理各种结合性问题。 但显然仅分治虽然可以通过把询问区间拆成多个线段树区间的并以实现快速查询,却不能快速修改,还是得一路分治到底。 故线段树引入了作用于原信息的懒标记,将修改操作延迟到需要访问对应信息的时候,某种意义上是把修改的复杂
阅读全文
摘要:数据结构的意义 哈希表 并查集 单调队列 单调栈 ST 表 树状数组 线段树 堆 平衡树 树套树 分块
阅读全文
摘要:唯一分解定理 ,此质因数分解式唯一。通常我们令 单调递增,称 的次数构成的向量为质数-指数向量,即数字的另一种表示形式,称为 进制表示法(由于历史原因,提向量较多, 进制较少)。 本定理事实上还代表着
阅读全文
摘要:数论分块 又称整除分块。 考虑求 。 引理:$\forall a,b,c\in \mathbb{Z},\lfloor\frac{a}{bc}\rfloor=\lfloor\dfrac{\lfloor\fra
阅读全文
摘要:群论 数论 多项式 组合数学 图论 博弈论 位运算与线性基 自动机 数学杂项 我早晚整一个集合论出来,蚌。 群论只有基础。数论正在整理。多项式没有开始。组合数学内容不全(卡特兰数等等)。图论中内容的版本(version,更新时间)差异过大。博弈论需要规约化。位运算内容不足且缺乏体系。自动机放在这里真
阅读全文
摘要:公告 23.3.10 起计划将内容清出,即不将解题报告单独列出,而仅作为版权考虑的无奈之举,或者是历史遗留的不想动,总之是插到对应知识点下面,这个目录也会删掉。不过什么时候就不知道了。 解怪题选择性报告(22.6.5~) 关键词:低配版解题报告。 22.10.9 T4 种树 关键词:版权。 图论上的
阅读全文
摘要:概述 莫队算法是一种离线算法,主要用于求序列上的区间式问题。 简单来说,如果题目给出一个序列 和 个离线询问,询问的范围是一个区间 ,且由 的答案可以在可接受的时间内推出 的答案,那么可
阅读全文
摘要:暴力模拟 构造 排序 双指针与扫描线 二分 倍增 分治 贪心 莫队 定期重构 随机化 近似算法 树上问题
阅读全文