一个动态更新的洛谷综合题单
SFOI-Team 维护的洛谷综合题单,作为洛谷试炼场的扩展与补充,按专题大类组织覆盖入门到省选各知识点。
一个动态更新的洛谷综合题单
原题单作者:SFOI-Team(Studying Father 等)。转载或引用请注明作者。
VJudge 题单原文 · GitHub 仓库 · 许可:CC BY-SA 4.0 + The Star And Thank Author License
洛谷试炼场的题目确实很具有代表性,但是近几年以来,又有许多经典题目出现在 OI 界中,这个大题单就是作为洛谷试炼场的扩展和补充。
本题单共收录 11 个 Part、118 个专题小节、726 个题目条目、718 道不同题目(8 道题重复出现在多个专题,按原题单保留)。
目录
食用指南
- 对于初学者,建议先完成 Part 1,2 两部分内容,为接下来的学习打好基础。
- 对于要参加 CSP-S 的选手,建议优先完成 Part 3.1-3.4, 4.1-4.4, 6.1-6.5, 7.1-7.8, 8.1-8.7 的内容,在此基础上继续完成其他内容。
- 每个专题下的题目先给出模板,剩下的题目均按照难度递增顺序排序,部分难度较高的综合性题目建议达到一定能力后再尝试解决。
Part 0 试机题
三道试机题目。
Part 1 入门阶段
本部分内容针对入门 OIer ,主要是语言基础内容。
Part 1.1 从零开始
语言基础题。
- luogu P1014洛谷原题
Part 1.2 数组基础
数组可以用于存储大量的信息。
- luogu P5594洛谷原题
Part 1.3 字符串基础
字符串是特殊的数组,但它也有很多自身的特点。
- · P1012 拼数
- luogu P5587洛谷原题
Part 1.4 函数,递归及递推
这是初学者最难理解的部分,建议画出递归图来理解递归的过程。
- · P1036 选数
- luogu P5534洛谷原题
- luogu P1192洛谷原题
- luogu P4994洛谷原题
Part 2 基础算法
这一部分的内容包含了 OI 中的基础算法,供各位巩固基础。
当然,这里面也有一些难度比较高的题目。
Part 2.1 模拟
模拟,顾名思义就是题目要求你做什么你就做什么,这样的题目很考验选手的代码组织能力。
这里不仅仅有非常基础的模拟,也有一些非常复杂的题目。
- luogu P2482洛谷原题
- luogu P5380洛谷原题· P5380 鸭棋
Part 2.2 排序算法
通过排序,我们可以将数据有序化,这让我们对数据的处理方便了很多。
- · P1177 排序
- luogu P1051洛谷原题
Part 2.3 二分答案
对一个满足单调性质的问题,我们可以采用二分答案的方法来解决。
- luogu P1902洛谷原题
Part 2.4 分治
分治,即分而治之,将大问题分解为小问题,分别求解,最后合并结果。
- luogu P1429洛谷原题
Part 2.5 贪心
贪心,指的是决策时都采取当前最优解的算法。有的时候,这样做确实可以获得最优解。
- luogu P2672洛谷原题
- luogu P5521洛谷原题
Part 2.6 构造
构造题是一种形式灵活多样的题型。正是因为这个特点,使得构造题没有一种通用的方法。
- luogu P3599洛谷原题
- luogu P5441洛谷原题· P5441 伤痕
- luogu P5595洛谷原题
Part 2.7 高精度
在 C++ 中,long long 都无法表示我们需要的整数时怎么办?那就用高精度吧!
- luogu P2142洛谷原题
- luogu P1480洛谷原题
Part 2.8 前缀和 & 差分
前缀和是一种重要的预处理,能大大降低查询的时间复杂度,而差分则是一种和前缀和相对的策略。
- luogu P1387洛谷原题
- · P3397 地毯
Part 3 搜索
搜索其实就是高级的枚举,很多题目都可以用搜索完成。就算不能,搜索也是骗分神器。
Part 3.1 深度优先搜索
深度优先搜索(DFS),即按照深度优先的顺序搜索的算法。
深度优先搜索一般使用栈来实现。
- luogu P5440洛谷原题· P5440 奇迹
- luogu P1378洛谷原题
Part 3.2 广度优先搜索
广度优先搜索(BFS),即优先扩展浅层节点,逐渐深入的搜索算法。
广度优先搜索一般使用队列来实现。
- · P3956 棋盘
Part 3.3 记忆化搜索
通过将已经遍历的状态记录下来,从而减少重复的搜索量,这就是记忆化搜索。
动态规划的时候,记忆化搜索也是一种高效简洁的实现方式。
- luogu P1514洛谷原题
- luogu P1535洛谷原题
- · P1434 滑雪
- luogu P3953洛谷原题
Part 3.4 搜索的剪枝
对于一些不必要搜索的部分,我们可以避免访问这些状态,从而提高搜索效率。
Part 3.5 双向搜索
在搜索时,如果能从初态和终态出发,同时进行搜索,就可以减小搜索树的规模,提高时间效率。
- luogu P3067洛谷原题
- luogu P5195洛谷原题
Part 3.6 A*
在 BFS 中,如果能设计一个合理的估价函数,就可以更快扩展到最优解。这就是 A*算法。
Part 3.7 IDA*
像 BFS 那样,每次只扩展一层节点,却采用 DFS 方式来遍历搜索树,这就是迭代加深搜索。
再加上一个估价函数来减小搜索量,就是 IDA*了。
- luogu P2534洛谷原题
Part 3.8 DLX
算法 X 是通过回溯法求解精确覆盖问题的算法,而删除列这一操作可以使用舞蹈链加速。
- luogu P4929洛谷原题
- luogu P4205洛谷原题
Part 4 动态规划
动态规划是一种重要的思维方法,通过利用已有的子问题信息高效求出当前问题的最优解。
Part 4.1 线性动态规划
线性动态规划,即具有线性阶段划分的动态规划。
- luogu P1091洛谷原题
- luogu P1095洛谷原题
- luogu P1541洛谷原题
- luogu P1868洛谷原题
- · P2679 子串
- luogu P2501洛谷原题
- luogu P3336洛谷原题· P3336 话旧
- luogu P3558洛谷原题
- luogu P4158洛谷原题
- luogu P5301洛谷原题
Part 4.2 背包动态规划
背包动态规划是线性动态规划中特殊的一类,NOIP中考到的次数也不少。
- · P1048 采药
- luogu P5020洛谷原题
- luogu P5289洛谷原题· P5289 皮配
Part 4.3 区间动态规划
区间动态规划一般以区间作为动态规划的阶段。
- luogu P1005洛谷原题
- · P4170 涂色
- luogu P4302洛谷原题
- luogu P2466洛谷原题
Part 4.4 树形动态规划
树形动态规划,即在树上进行的动态规划。
因为树的递归性质,树形动态规划一般都是递归求解的。
- luogu P1040洛谷原题
- luogu P1273洛谷原题
- · P2014 选课
- luogu P2585洛谷原题
- luogu P3698洛谷原题
- luogu P2607洛谷原题· P2607 骑士
- luogu P4395洛谷原题
Part 4.5 状态压缩动态规划
将一个状态压缩为一个整数(通常为二进制数),就可以在更为方便地进行状态转移的同时,达到节约空间的目的。
- luogu P3092洛谷原题
- luogu P3694洛谷原题
- luogu P4925洛谷原题
- luogu P2157洛谷原题
- luogu P2167洛谷原题
- luogu P2396洛谷原题
- luogu P4363洛谷原题
- luogu P5005洛谷原题
- luogu P2150洛谷原题
Part 4.6 倍增优化动态规划
利用倍增的方式,我们可以将状态转移的效率大大提高。
- luogu P1613洛谷原题· P1613 跑路
- luogu P1081洛谷原题
- luogu P5024洛谷原题
Part 4.7 数据结构优化动态规划
利用数据结构来维护已有信息,也可以达到优化状态转移的目的。
- luogu P4719洛谷原题
- luogu P4751洛谷原题
- luogu P3287洛谷原题
- luogu P2605洛谷原题
Part 4.8 单调队列优化动态规划
借助单调队列,排除不可能的决策,可以起到优化状态转移的效果。
- luogu P3089洛谷原题
- luogu P4544洛谷原题
- · P5665 划分
- luogu P1973洛谷原题
- luogu P4852洛谷原题
Part 4.9 斜率优化动态规划
通过用单调队列维护一个凸壳,来达到优化转移的目的。
- luogu P3628洛谷原题
- luogu P3648洛谷原题
- luogu P4027洛谷原题
- luogu P4360洛谷原题
- luogu P5468洛谷原题
- luogu P2305洛谷原题· P2305 购票
Part 4.10 决策单调性优化动态规划
利用决策间的递变规律,也能实现优化状态转移的目的。
- luogu P3515洛谷原题
- luogu P1912洛谷原题
- luogu P1973洛谷原题
- luogu P3724洛谷原题· P3724 大佬
- luogu P5574洛谷原题
Part 4.11 数位统计类动态规划
统计一个区间中满足条件的数有多少,就是数位统计类动态规划。
- luogu P2602洛谷原题
- luogu P3281洛谷原题· P3281 数数
- luogu P2518洛谷原题· P2518 计数
- luogu P3286洛谷原题
- luogu P4124洛谷原题
- luogu P4999洛谷原题
- luogu P2606洛谷原题
- luogu P4798洛谷原题
Part 4.12 轮廓线动态规划
轮廓线动态规划(即常说的插头 DP)是一种特殊的状压动态规划,通过以轮廓线为状态来实现状态转移。
- luogu P5056洛谷原题
- luogu P2289洛谷原题
- luogu P2337洛谷原题
- luogu P5347洛谷原题
Part 5 字符串
字符串问题有很多自己的特点。
Part 5.1 字符串哈希
字符串哈希通过牺牲很小的准确率,达到快速进行字符串匹配的效果。
- luogu P5270洛谷原题
- luogu P5537洛谷原题
Part 5.2 KMP
KMP 算法可以用来解决模式串匹配问题。
- luogu P4824洛谷原题
- luogu P3426洛谷原题
- luogu P3193洛谷原题
Part 5.3 Manacher
Manacher 可以在线性时间内求出一个字符串的最长回文子串。
- luogu P3805洛谷原题
- luogu P4555洛谷原题
- luogu P1659洛谷原题
Part 5.4 Trie树
Trie树可以像查字典一样把多个字符串组织到一棵树上。
- luogu P2292洛谷原题
- luogu P3065洛谷原题
- luogu P3294洛谷原题
- luogu P4407洛谷原题
- luogu P4683洛谷原题
- luogu P3783洛谷原题
Part 5.5 AC自动机
AC自动机可以看成是 KMP 和 Trie 的结合体,用于解决多字符串匹配问题。
- luogu P3796洛谷原题
- luogu P5357洛谷原题
- luogu P2414洛谷原题
- luogu P3966洛谷原题· P3966 单词
- luogu P2444洛谷原题· P2444 病毒
- luogu P3311洛谷原题· P3311 数数
- luogu P4052洛谷原题
- luogu P5599洛谷原题
Part 5.6 回文自动机
回文自动机是解决回文串问题的有力工具。
- luogu P5496洛谷原题
- luogu P3649洛谷原题
- luogu P4287洛谷原题
- luogu P4762洛谷原题
Part 5.7 后缀数组
后缀数组可以解决很多字符串匹配的问题。
- luogu P3809洛谷原题
- luogu P5353洛谷原题
- luogu P2336洛谷原题
- luogu P2463洛谷原题
- luogu P4051洛谷原题
- luogu P1117洛谷原题
- luogu P2178洛谷原题
- luogu P5346洛谷原题
- luogu P5576洛谷原题
Part 5.8 后缀自动机
后缀自动机是一种处理字符串问题的强大工具。
- luogu P3804洛谷原题
- luogu P3649洛谷原题
- luogu P3975洛谷原题· P3975 弦论
- luogu P4248洛谷原题· P4248 差异
- luogu P5341洛谷原题
- luogu P4770洛谷原题
- luogu P5284洛谷原题
- luogu P5319洛谷原题
Part 6 数学
OI 中的数学知识很多,也有些杂乱。
Part 6.1 位运算
将十进制整数转换为二进制后,有很多按位运算的运算符。
如果能善于利用位运算的一些性质,往往能达到事半功倍的效果。
- luogu P5514洛谷原题
- luogu P5538洛谷原题
- luogu P5539洛谷原题
- luogu P5523洛谷原题· P5523 珍珠
Part 6.2 整除相关
与整除相关的概念有很多,比较常用的有素数,最大公约数和欧拉函数。
Part 6.2.1 素数
素数,指的是除 1 和它本身之外没有其他约数的数。
- luogu P4718洛谷原题
- luogu P5535洛谷原题
Part 6.2.2 最大公约数
如果两个数有一个共同的约数,那么这个约数就被称为公约数。最大公约数就是指这两个数的所有公约数中,最大的一个。
求解两个数的最大公约数,可以采用欧几里得算法解决。
- luogu P5435洛谷原题
- luogu P5436洛谷原题· P5436 缘分
- luogu P2152洛谷原题
Part 6.2.3 欧拉函数
欧拉函数 $ \varphi (x) $ 表示了小于 $ x $ 的数字中,与 $ x $ 互质的数字个数。
- luogu P2158洛谷原题
- luogu P2568洛谷原题
- luogu P2398洛谷原题
- luogu P4139洛谷原题
Part 6.3 同余方程
求解同余方程往往可以引出不少话题。
Part 6.3.1 线性同余方程&乘法逆元
线性同余方程是同余方程中最基础的内容。
- luogu P4549洛谷原题
- luogu P2613洛谷原题
- luogu P3811洛谷原题
- luogu P5431洛谷原题
- luogu P3951洛谷原题
Part 6.3.2 中国剩余定理
中国剩余定理可以快速解一元线性同余方程组。
- luogu P4777洛谷原题
- luogu P3868洛谷原题
- luogu P2480洛谷原题
- luogu P4774洛谷原题
- luogu P5345洛谷原题
Part 6.3.3 高次同余方程
BSGS 算法可以高效计算离散对数。
而高次剩余的求解更加复杂,其中二次剩余作为高次剩余中比较特殊的情况,可以使用 Cipolla 法求解。
- luogu P4195洛谷原题
- luogu P5491洛谷原题
- luogu P3306洛谷原题
- luogu P2485洛谷原题
Part 6.4 博弈论
博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。
- luogu P2197洛谷原题
- luogu P1288洛谷原题
- luogu P1290洛谷原题
- luogu P1247洛谷原题
- luogu P2252洛谷原题
Part 6.5 概率与期望
概率和期望是紧密相连的,OI 中往往会出现和概率期望相关的动态规划问题。
- luogu P5104洛谷原题
- luogu P1850洛谷原题
- luogu P3830洛谷原题
- luogu P4564洛谷原题· P4564 假面
- luogu P2473洛谷原题
- luogu P2221洛谷原题
- luogu P3239洛谷原题
- luogu P3750洛谷原题
- luogu P4284洛谷原题
- luogu P5249洛谷原题
- luogu P2081洛谷原题
- luogu P3343洛谷原题
- luogu P3600洛谷原题
- luogu P5326洛谷原题· P5326 开关
Part 6.6 组合数学
组合数学常常与计数问题,概率期望紧密相连。
Part 6.6.1 排列组合
排列组合是组合数学的基础。
- luogu P3807洛谷原题
- luogu P5520洛谷原题
- · P3197 越狱
- luogu P2290洛谷原题
- luogu P4981洛谷原题· P4981 父子
- luogu P4769洛谷原题
- luogu P5596洛谷原题· P5596 题
- luogu P5598洛谷原题
Part 6.6.2 卡特兰数&斯特林数
卡特兰数和斯特林数是两类常见的组合递推数列。
- luogu P5395洛谷原题
- luogu P5396洛谷原题
- luogu P5408洛谷原题
- luogu P5409洛谷原题
- luogu P1655洛谷原题
- luogu P2532洛谷原题
- luogu P3978洛谷原题
- luogu P4091洛谷原题· P4091 求和
- luogu P4827洛谷原题
Part 6.6.3 容斥原理
容斥原理常常用于解决集合的计数问题。
- · P3214 卡农
- luogu P3270洛谷原题
- luogu P4336洛谷原题
- luogu P4448洛谷原题
- luogu P4491洛谷原题· P4491 染色
- luogu P5339洛谷原题
- luogu P5400洛谷原题
Part 6.7 线性代数
线性代数主要用于解决线性关系问题。
Part 6.7.1 矩阵
利用矩阵优化数列递推,可以实现复杂度从线性到对数级的转变。
- luogu P1939洛谷原题
- luogu P4783洛谷原题
- luogu P1962洛谷原题
- luogu P1349洛谷原题
- luogu P4000洛谷原题
- luogu P3758洛谷原题· P3758 可乐
- luogu P4967洛谷原题
- luogu P5343洛谷原题· P5343 分块
- luogu P5337洛谷原题
- luogu P5303洛谷原题
Part 6.7.2 高斯消元
高斯消元可以用来求解方程组。
- luogu P3389洛谷原题
- luogu P2447洛谷原题
- luogu P4035洛谷原题
- luogu P5516洛谷原题
- luogu P4111洛谷原题
- luogu P4457洛谷原题
Part 6.7.3 线性基
线性基可以求解最大异或和的一类问题。
- luogu P3812洛谷原题
- luogu P3857洛谷原题· P3857 彩灯
- luogu P4570洛谷原题· P4570 元素
- luogu P4301洛谷原题
- luogu P3292洛谷原题
- luogu P4151洛谷原题
Part 6.8 多项式
对多项式的运算进行优化,从而能够解决规模更大的问题。
- luogu P3803洛谷原题
- luogu P4238洛谷原题
- luogu P4245洛谷原题
- luogu P4512洛谷原题
- luogu P4717洛谷原题
- luogu P4721洛谷原题
- luogu P4725洛谷原题
- luogu P4726洛谷原题
- luogu P4781洛谷原题
- luogu P5050洛谷原题
- luogu P5158洛谷原题
- luogu P5205洛谷原题
- luogu P5245洛谷原题
- luogu P5273洛谷原题
- luogu P5282洛谷原题
- luogu P5373洛谷原题
- luogu P5394洛谷原题
- luogu P3338洛谷原题· P3338 力
- luogu P3723洛谷原题· P3723 礼物
- luogu P5437洛谷原题· P5437 约定
- luogu P5293洛谷原题
- luogu P5432洛谷原题
- luogu P5472洛谷原题
- luogu P5577洛谷原题
Part 6.9 莫比乌斯反演
运用莫比乌斯反演,我们可以将一些函数转化,从而降低计算难度。
- luogu P3172洛谷原题· P3172 选数
- luogu P2522洛谷原题
- luogu P3455洛谷原题
- luogu P3327洛谷原题
- luogu P1829洛谷原题
- luogu P4619洛谷原题
- luogu P3704洛谷原题
- luogu P5518洛谷原题
Part 6.10 筛法
利用数列的性质,有多种筛法可以求出我们想要的信息。
- luogu P4213洛谷原题
- luogu P5325洛谷原题
- luogu P1865洛谷原题
- · P1621 集合
- luogu P3768洛谷原题
- luogu P5438洛谷原题· P5438 记忆
Part 6.11 线性规划
线性规划是研究线性约束条件下线性目标函数极值问题的方法。
- luogu P3980洛谷原题
- luogu P4232洛谷原题
Part 6.12 数值方法
在算法领域,有很多求近似值的数值方法。
Part 6.12.1 三分法
三分法可以求出一个单峰 / 单谷函数的极值。
- luogu P3382洛谷原题· P3382 三分
- luogu P1883洛谷原题
Part 6.12.2 自适应辛普森法
自适应辛普森法可以高效求出给定函数的数值积分。
- luogu P4525洛谷原题
- luogu P4526洛谷原题
- luogu P3779洛谷原题
Part 6.13 置换群
置换群通常用来解决一些涉及“本质不同”的计数问题。
- luogu P4980洛谷原题
- luogu P1446洛谷原题
- luogu P2561洛谷原题
- luogu P4128洛谷原题
- luogu P4727洛谷原题
Part 7 数据结构
灵活地运用数据结构可以高效地查询并处理需要的信息。
Part 7.1 链表
在一个数列中高效插入一个元素,链表毫无疑问是最好的选择。
Part 7.2 栈
栈,是一种后进先出(FILO)的数据结构。
Part 7.3 队列
队列,是一种先进先出(FIFO)的数据结构。
Part 7.4 并查集
并查集常用于处理一些不相交集合的合并和查询问题。
- luogu P3958洛谷原题· P3958 奶酪
- luogu P4185洛谷原题
Part 7.5 二叉堆
二叉堆是一棵完全二叉树,堆中某个节点的值总是不大于或不小于其父节点的值。
- · P3378 堆
- · P2827 蚯蚓
- luogu P3045洛谷原题
Part 7.6 ST表
ST表可以离线查询区间最值。
- luogu P3865洛谷原题
- · P1816 忠诚
- luogu P5012洛谷原题
- luogu P5344洛谷原题
Part 7.7 树状数组
树状数组是一种简洁高效的树形数据结构。
- luogu P3605洛谷原题
- luogu P3586洛谷原题
- luogu P4054洛谷原题
- luogu P4113洛谷原题· P4113 采花
- luogu P3960洛谷原题· P3960 列队
Part 7.8 线段树
线段树的通用性比树状数组更强,可以处理更多涉及区间操作的题目。
- luogu P5490洛谷原题
- luogu P1502洛谷原题
- luogu P2824洛谷原题· P2824 排序
- luogu P3722洛谷原题· P3722 影魔
- luogu P4097洛谷原题
- luogu P4198洛谷原题
- luogu P4556洛谷原题
- luogu P5324洛谷原题· P5324 删数
- luogu P5327洛谷原题· P5327 语言
Part 7.9 分块
分块是一种非常通用的暴力方法,虽然效率不如线段树和树状数组,但可以解决很多线段树和树状数组处理不了的问题。
- · P3870 开关
- luogu P3396洛谷原题
- luogu P3863洛谷原题· P3863 序列
- luogu P1975洛谷原题· P1975 排队
- luogu P3710洛谷原题
- luogu P3992洛谷原题· P3992 开车
- luogu P4168洛谷原题
- luogu P4119洛谷原题
Part 7.10 可并堆
可并堆分为左偏树和配对堆两种,它们都具有堆的性质,且可以高效合并。
- luogu P3377洛谷原题
- luogu P2713洛谷原题
- luogu P1456洛谷原题
- luogu P1552洛谷原题· P1552 派遣
- luogu P3261洛谷原题
- luogu P3273洛谷原题
- luogu P4331洛谷原题
Part 7.11 主席树
主席树,即可持久化权值线段树。
- luogu P2468洛谷原题
- luogu P3302洛谷原题· P3302 森林
- luogu P3168洛谷原题
- luogu P4559洛谷原题· P4559 列队
- luogu P2633洛谷原题
- luogu P3293洛谷原题· P3293 美味
- luogu P4618洛谷原题
Part 7.12 平衡树
二叉搜索树可以用来维护有序序列。
为了保证查询效率,有多种使二叉搜索树保持平衡的实现方法。
- luogu P3850洛谷原题· P3850 书架
- luogu P4008洛谷原题
- luogu P5338洛谷原题
- luogu P2042洛谷原题
- luogu P1110洛谷原题
- luogu P3644洛谷原题
- luogu P1486洛谷原题
- luogu P2710洛谷原题· P2710 数列
- luogu P3224洛谷原题
- luogu P3285洛谷原题
- luogu P5321洛谷原题· P5321 送别
Part 7.13 树链剖分
树链剖分可以将任意一条树上路径划分成若干条连续的链,并用线段树等数据结构高效维护链上信息。
- · P3313 旅行
- luogu P1505洛谷原题· P1505 旅游
- luogu P2486洛谷原题· P2486 染色
- luogu P4069洛谷原题· P4069 游戏
- luogu P4211洛谷原题
- · P4592 异或
- luogu P5305洛谷原题· P5305 旧词
- luogu P5354洛谷原题
- luogu P5499洛谷原题
Part 7.14 树套树
树套树可以用来维护多维度信息。
- luogu P3380洛谷原题
- luogu P1975洛谷原题· P1975 排队
- luogu P3332洛谷原题
- luogu P4278洛谷原题
- luogu P3759洛谷原题
- luogu P3242洛谷原题
- luogu P3248洛谷原题· P3248 树
- luogu P5445洛谷原题· P5445 路灯
Part 7.15 动态树
Link-Cut Tree 可以用来解决动态树一类问题。
- luogu P3690洛谷原题
- luogu P3203洛谷原题
- luogu P4338洛谷原题· P4338 历史
- luogu P4312洛谷原题
- luogu P1501洛谷原题
- luogu P2387洛谷原题
- luogu P3348洛谷原题
- luogu P3703洛谷原题
- luogu P4172洛谷原题
- luogu P4219洛谷原题
- luogu P5489洛谷原题
Part 7.16 可持久化数据结构
可持久化数据结构实现了在更新信息的时候保留历史版本。
- luogu P3919洛谷原题
- luogu P3402洛谷原题
- luogu P3835洛谷原题
- luogu P5055洛谷原题
Part 7.17 K-D Tree
K-D Tree 是一种高效处理 $ k $ 维信息的数据结构。
- luogu P4357洛谷原题
- luogu P4148洛谷原题
- luogu P2479洛谷原题
- luogu P3769洛谷原题
- luogu P4169洛谷原题
- luogu P4390洛谷原题
- luogu P4475洛谷原题
- luogu P2093洛谷原题
- luogu P5471洛谷原题· P5471 弹跳
Part 7.18 珂朵莉树
珂朵莉树,是一种基于
std::set的暴力数据结构,在数据随机的情况下表现优秀。
- luogu P5251洛谷原题
- luogu P5350洛谷原题· P5350 序列
Part 8 图论
图论是数学的一个分支,它以图为研究的对象。
Part 8.1 图的存储与遍历
这里的图论内容都比较简单,涉及图的存储以及遍历图的方式。
- luogu P2661洛谷原题
- luogu P2921洛谷原题
Part 8.2 最短路问题
很多题目都可以转化为最短路的模型。因此,掌握最短路算法非常重要。
- luogu P3371洛谷原题
- luogu P5905洛谷原题
- luogu P1266洛谷原题
- luogu P3238洛谷原题
- luogu P5304洛谷原题
Part 8.3 树上问题
作为一种特殊的图,树上的问题具有很多鲜明的特点。
Part 8.3.1 二叉树
二叉树是一种特殊的树,它有很多特殊的性质。
- luogu P5597洛谷原题· P5597 复读
Part 8.3.2 树的直径
树的直径被定义为树上最远的两点间的距离。
计算树的直径,可以通过两遍 DFS 解决。
- luogu P2195洛谷原题
- luogu P3629洛谷原题· P3629 巡逻
Part 8.3.3 最近公共祖先
两个点的最近公共祖先,即两个点的所有公共祖先中,离根节点最远的一个节点。
求解最近公共祖先,常用的方法是树上倍增或者树链剖分。
- luogu P3938洛谷原题
Part 8.4 生成树
用 $ n-1 $ 条边将图上的 $ n $ 个点连接起来,形成的树就被称为生成树。
Part 8.5 拓扑排序
将一个有向无环图排序,使得所有排在前面的节点不能依赖于排在后面的节点,这就是拓扑排序。
- · P1113 杂务
Part 8.6 差分约束
差分约束要解决的问题是:求出一组 $ n $ 元不等式的一组解,使得所有约束关系都能得到满足。
- · P3275 糖果
- luogu P2294洛谷原题
- luogu P4926洛谷原题
- luogu P5590洛谷原题
Part 8.7 图的连通性相关
利用 Tarjan 算法,我们可以解决很多与图的连通性相关的问题。
Part 8.8 二分图
二分图上的不少问题都可以转化成网络流解决,当然也有独特的其他方法。
- luogu P2756洛谷原题
- · P2825 游戏
- luogu P3731洛谷原题
Part 8.9 网络流
网络流是图论中一个重要的分支,很多题目都可以通过建立网络流的模型来解决。
Part 8.9.1 最大流
最大流,即求网络中最大的流量。
- luogu P3376洛谷原题
- luogu P4722洛谷原题
- · P2065 卡片
- luogu P2472洛谷原题· P2472 蜥蜴
- luogu P2754洛谷原题
- luogu P2805洛谷原题
Part 8.9.2 最小割
最小割,即求一个边权最小的边集,使得源点和汇点不再连通。
可以证明,最大流=最小割。
- luogu P2598洛谷原题
- luogu P4126洛谷原题
- luogu P5039洛谷原题
Part 8.9.3 费用流
在网络流中给边加上一个参数——费用,就出现了费用流。
- luogu P3381洛谷原题
- luogu P4452洛谷原题
- luogu P2050洛谷原题
- · P2053 修车
- luogu P2604洛谷原题
- luogu P2770洛谷原题
- luogu P3159洛谷原题
- luogu P3356洛谷原题
- luogu P5331洛谷原题· P5331 通信
Part 8.9.4 上下界网络流
在网络流问题中给每条边的流量增加一个下界,就有了上下界网络流。
- luogu P3980洛谷原题
- luogu P4043洛谷原题
- luogu P4553洛谷原题
- luogu P4843洛谷原题
Part 8.10 2-SAT
k-SAT 问题的目标是对一些布尔变量赋值,满足限定的条件。
在 k-SAT 问题中,2-SAT 问题属于较为容易解决的一类。
- luogu P4782洛谷原题
- luogu P4171洛谷原题
- luogu P3825洛谷原题· P3825 游戏
- luogu P5332洛谷原题
Part 8.11 点分治
点分治是一种可以高效统计树上路径信息的算法。
- luogu P3806洛谷原题
- luogu P2634洛谷原题
- luogu P2664洛谷原题
- luogu P3714洛谷原题
- luogu P4149洛谷原题
- luogu P3241洛谷原题· P3241 开店
- luogu P4075洛谷原题
- luogu P4183洛谷原题
- luogu P4292洛谷原题
- luogu P5306洛谷原题
Part 8.12 虚树
将一些无用的点从树上删去,从而达到降低树的规模的效果。
- luogu P3233洛谷原题
- luogu P5360洛谷原题
- luogu P5439洛谷原题· P5439 永恒
Part 8.13 矩阵树定理
矩阵树定理可以解决图的生成树计数问题。
- luogu P4111洛谷原题
- luogu P2144洛谷原题
- luogu P3317洛谷原题· P3317 重建
- luogu P4208洛谷原题
Part 9 计算几何
试着用计算机来解决几何问题吧!
Part 9.1 凸包
凸包指在平面上能包含所有给定点的最小凸多边形。
- luogu P2742洛谷原题
- luogu P2287洛谷原题
- luogu P3829洛谷原题
- luogu P4680洛谷原题
- luogu P4557洛谷原题· P4557 战争
- luogu P5403洛谷原题· P5403 田野
Part 9.2 旋转卡壳
旋转卡壳是一种求出凸包所有对踵点对的算法。
- luogu P1452洛谷原题
- luogu P3187洛谷原题
Part 9.3 半平面交
多个半平面的交集称之为半平面交。
- luogu P3256洛谷原题· P3256 赛车
- luogu P2600洛谷原题
- luogu P4196洛谷原题
- luogu P3297洛谷原题· P3297 逃考
- luogu P4250洛谷原题
- luogu P5328洛谷原题
Part 10 杂项
这里的专题,有很多都难以纳入前面的类别中,故将他们单独列入了杂项。
Part 10.1 模拟退火
模拟退火是一种随机化算法。当一个问题的方案数量极大(甚至是无穷的)而且不是一个单峰函数时,我们常使用模拟退火求解。
- luogu P1337洛谷原题
- luogu P2503洛谷原题
- luogu P3878洛谷原题
Part 10.2 0/1 分数规划
0/1 分数规划用来求一个分式的极值。
- luogu P3288洛谷原题
- luogu P3705洛谷原题
Part 10.3 离线算法
当题目不要求强制在线时,我们可以一次性读入所有询问来处理。
Part 10.3.1 CDQ 分治
CDQ 分治是一个基于分治思想的离线算法。
- luogu P3810洛谷原题
- luogu P3157洛谷原题
- luogu P2487洛谷原题
- luogu P4690洛谷原题
- luogu P3206洛谷原题
Part 10.3.2 整体二分
整体二分,顾名思义就是把多个查询一起二分解决。
- luogu P1527洛谷原题
- luogu P2617洛谷原题
- luogu P3527洛谷原题
- luogu P4602洛谷原题
Part 10.3.3 莫队
莫队算法可以解决不少离线区间询问问题。
- luogu P5906洛谷原题
- luogu P4887洛谷原题
- luogu P2709洛谷原题
- luogu P3674洛谷原题
- luogu P3709洛谷原题
- luogu P4074洛谷原题
- luogu P5501洛谷原题
Part 10.4 奇怪的题目
OI 界中有一些非常规套路的题目,这里放出来分享。
- luogu P4920洛谷原题
- luogu P5042洛谷原题
- luogu P5285洛谷原题
- luogu P5246洛谷原题
Part 10.5 非传统题
在 NOI 等比赛中,非传统题正越来越频繁出现。
非传统题主要包括以下几类:提交答案题,交互题,通信题。
Part 10.5.1 提交答案题
给你一些输入,你只需要提交这些输入对应的答案,即为提交答案题。
- luogu P1335洛谷原题
- luogu P1737洛谷原题
- luogu P3614洛谷原题
- luogu P3640洛谷原题
- luogu P3782洛谷原题· P3782 排序
- luogu P3836洛谷原题
- luogu P4920洛谷原题
- luogu P5402洛谷原题
- luogu P5418洛谷原题
- luogu P5600洛谷原题
Part 10.5.2 交互题
在交互题中,选手程序需要通过与测评程序交互来完成任务。
- luogu P1733洛谷原题
- luogu P1947洛谷原题· P1947 猜数
- luogu P5208洛谷原题
- luogu P5473洛谷原题
- luogu P6541洛谷原题
- luogu P6558洛谷原题