李煜东《算法竞赛进阶指南》题单
按洛谷李煜东《算法竞赛进阶指南》题单整理的完整练习路径。
洛谷李煜东《算法竞赛进阶指南》题单
本题单共收录 14 个子题单、330 个题目条目、327 道不同题目。
其中有 3 道题出现在多个学习阶段,形成 3 个重复条目。这些条目按洛谷原分组保留,并共享完成进度。
题目按洛谷书籍题单的例题、习题分组顺序排列。
目录
- 怎么看小节里的图
- 基本算法-例题(李煜东《算法竞赛进阶指南》)
- 基本算法-习题(李煜东《算法竞赛进阶指南》)
- 基本数据结构-例题(李煜东《算法竞赛进阶指南》)
- 基本数据结构-习题(李煜东《算法竞赛进阶指南》)
- 搜索-例题(李煜东《算法竞赛进阶指南》)
- 搜索-习题(李煜东《算法竞赛进阶指南》)
- 数学知识-例题(李煜东《算法竞赛进阶指南》)
- 数学知识-习题(李煜东《算法竞赛进阶指南》)
- 数据结构进阶-例题(李煜东《算法竞赛进阶指南》)
- 数据结构进阶-习题(李煜东《算法竞赛进阶指南》)
- 动态规划-例题(李煜东《算法竞赛进阶指南》)
- 动态规划-习题(李煜东《算法竞赛进阶指南》)
- 图论-例题(李煜东《算法竞赛进阶指南》)
- 图论-习题(李煜东《算法竞赛进阶指南》)
怎么看小节里的图
每个小节开头有几张 flowchart TD 有向图,画的是本节题目之间的做题先后关系。
- 节点写「题号 + 简短标题」,就是本节题单里列的那几道题。
- 箭头
A → B表示硬前置:B 会用到 A 建立起来的套路,先把 A 做完再碰 B,能省掉大量原地打转。 - 灰色虚线节点是上一节(例题)的收尾题,虚线箭头指向它直接支撑的本节题目。书里每章的「习题」都默认先做完同章「例题」。
- 图里只画有前置关系的题。 没有出现在任何图里的题,在每节末尾单独列出,它们不依赖本节任何题,可以随时插进来做。
- 图只画本小节内关系,跨小节的依赖除虚线节点外都用文字说明。
- 同一道题出现在多个小节时,每节的图都把它完整画一次,因为它在不同小节的入边并不相同。
基本算法-例题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 27 题
位运算
flowchart TD nP1226["P1226 快速幂"] nP10446["P10446 64 位整数乘法"] nP2114["P2114 起床困难综合症"] nP1226 --> nP10446 nP1226 --> nP2114
P1226 快速幂是位运算入门,P10446 是它的乘法版(防溢出),P2114 是位运算贪心。
枚举与子集
flowchart TD nB3621["B3621 枚举元组"] nP10448["P10448 组合型枚举"] nB3623["B3623 枚举排列"] nB3622["B3622 枚举子集"] nP10449["P10449 费解的开关"] nB3621 --> nP10448 nP10448 --> nB3623 nB3621 --> nB3622 nB3622 --> nP10449
B3621 枚举元组是最外层骨架,P10448 组合型枚举与 B3623 枚举排列是它的两个变体;B3622 枚举子集是 P10449 费解的开关的前置。
前缀和、差分与二分
flowchart TD nP2280["P2280 激光炸弹"] nP4552["P4552 IncDec Sequence"] nP2879["P2879 Tallest Cow"] nP10450["P10450 Best Cow Fences"] nP10451["P10451 Innovative Business"] nP4552 --> nP2879 nP2280 --> nP10450
P4552 差分模板之后 P2879 是它的应用题;P2280 二维前缀和之后 P10450 把前缀和塞进二分答案的 check,P10451 是另一道二分的用法。
中位数
flowchart TD nP10452["P10452 货仓选址"] nP10453["P10453 七夕祭"] nP1168["P1168 中位数"] nP10452 --> nP10453 nP10452 --> nP1168
P10452 货仓选址是「中位数最优」的最小模型,P10453 七夕祭把它做成二维,P1168 中位数要动态维护。
逆序对
flowchart TD nUVA10810["UVA10810 Ultra-QuickSort"] nP10454["P10454 奇数码问题"] nP10455["P10455 Genius Acm"] nUVA10810 --> nP10454
UVA10810 用归并数逆序对,P10454 奇数码问题用逆序对判可达;P10455 Genius Acm 是分治的另一种用法。
贪心配对
flowchart TD nP2887["P2887 Sunscreen"] nP2859["P2859 Stall Reservations"] nP2887 --> nP2859
P2887 防晒霜按端点排序后匹配,P2859 Stall Reservations 是同一类的区间分配。
P10447(状压 DP 求 Hamilton 路径)、P1593(因子和)、P1080(邻项交换)、UVA1193(区间选点)、UVA1205(树上贪心)、CF670C(排序统计)与上面六张图没有前置关系。
- luogu P10446洛谷原题
- luogu P10447洛谷原题
- luogu P2114洛谷原题
- luogu B3621洛谷原题
- luogu P10448洛谷原题
- luogu B3622洛谷原题
- luogu B3623洛谷原题
- luogu P10449洛谷原题
- luogu P10450洛谷原题
- luogu P10451洛谷原题
- luogu CF670C洛谷原题
- luogu P10452洛谷原题
- luogu P10453洛谷原题
- luogu UVA10810洛谷原题
- luogu P10454洛谷原题
- luogu P10455洛谷原题
- luogu UVA1193洛谷原题
- luogu UVA1205洛谷原题
基本算法-习题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 12 题
开关与翻转
flowchart TD nPRE0(["上一节例题<br/>P10449 费解的开关"]):::pre nP10456["P10456 The Pilots Brothers"] nPRE0 -.-> nP10456 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P10456 是费解的开关的二维版,先把上一节那题的翻转套路写熟。
二分与前缀
flowchart TD nPRE1(["上一节例题<br/>P10450 Best Cow Fences"]):::pre nP2862["P2862 Corral the Cows"] nP10464["P10464 Task"] nP10460["P10460 防线"] nPRE1 -.-> nP2862 nPRE1 -.-> nP10464 nP10460 --> nP2862 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
三题都是「二分答案 + 前缀和 check」:P2862 数矩形内的点数,P10464 Task 是最小化最大时间,P10460 防线要在 check 里算奇偶。
中位数
flowchart TD nPRE2(["上一节例题<br/>P10452 货仓选址"]):::pre nP1889["P1889 士兵站队"] nP2512["P2512 糖果传递"] nPRE2 -.-> nP1889 nP1889 --> nP2512 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P1889 士兵站队是货仓选址的二维版,P2512 糖果传递在它之上再加环形均分。
邻项交换贪心
flowchart TD nPRE3(["上一节例题<br/>P1080 国王游戏"]):::pre nP1842["P1842 奶牛玩杂技"] nPRE3 -.-> nP1842 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P1842 奶牛玩杂技是国王游戏的同一套邻项交换推导。
二维前缀和
flowchart TD nPRE4(["上一节例题<br/>P2280 激光炸弹"]):::pre nP1719["P1719 最大加权矩形"] nPRE4 -.-> nP1719 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P1719 最大加权矩形在二维前缀和之上枚举上下界,先做完上一节的激光炸弹。
P10457(模拟)、P10458(分形递归)、P10459(平面最近点对)、P10462(进制转换)与本节其他题没有前置关系。
- luogu P10456洛谷原题
- luogu P10457洛谷原题
- luogu P10458洛谷原题
- luogu P10459洛谷原题
- luogu P10460洛谷原题
- luogu P2862洛谷原题
- luogu P2512洛谷原题
- luogu P1889洛谷原题
- luogu P10462洛谷原题
- luogu P1842洛谷原题
- luogu P10464洛谷原题
基本数据结构-例题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 22 题
栈与单调栈
flowchart TD nP1044["P1044 栈"] nP2201["P2201 数列编辑器"] nSP1805["SP1805 Largest Rectangle"] nP1044 --> nP2201 nP1044 --> nSP1805
P1044 栈是栈的入门(Catalan 计数),P2201 数列编辑器用对顶栈模拟光标,SP1805 是单调栈求最大矩形。
队列与单调队列
flowchart TD nUVA540["UVA540 Team Queue"] nP10465["P10465 双端队列"] nP2827["P2827 蚯蚓"] nP1115["P1115 最大子段和"] nUVA540 --> nP10465 nP10465 --> nP2827
UVA540 团体队列练队列,P10465 双端队列是它的进阶,P2827 蚯蚓用单调队列把堆替换掉;P1115 是分治最大子段。
哈希
flowchart TD nP10466["P10466 邻值查找"] nP10467["P10467 Snowflake"] nP10468["P10468 兔子与兔子"] nP10467 --> nP10468
P10466 邻值查找要动态找前驱后继,P10467 Snowflake 是手写哈希判重,P10468 兔子与兔子把哈希搬到字符串前缀上。
Trie
flowchart TD nP10470["P10470 前缀统计"] nP10471["P10471 最大异或对"] nP4551["P4551 最长异或路径"] nP10470 --> nP10471 nP10471 --> nP4551
P10470 前缀统计是 Trie 模板,P10471 把字符换成二进制位(01-Trie),P4551 再把 01-Trie 搬到树上。
堆与贪心
flowchart TD nUVA1316["UVA1316 Supermarket"] nP3620["P3620 数据备份"] nP1631["P1631 序列合并"] nUVA1316 --> nP3620 nP1631 --> nP3620
UVA1316 是堆 + 贪心的模板,P1631 序列合并是多路合并,P3620 数据备份要用「反悔贪心」把两题的手法合起来。
哈夫曼
flowchart TD nP6033["P6033 合并果子 加强版"] nP2168["P2168 荷马史诗"] nP6033 --> nP2168
P6033 合并果子加强版要求线性做法,P2168 荷马史诗是它的 k 叉哈夫曼版。
P1168(对顶堆)、P1210(最长回文)、P10469(后缀数组)、SP263(KMP 周期)与上面六张图没有前置关系。
- luogu P2201洛谷原题
- luogu SP1805洛谷原题
- luogu UVA540洛谷原题
- luogu P10465洛谷原题
- luogu P10466洛谷原题
- luogu P10467洛谷原题
- luogu P10468洛谷原题
- luogu P1210洛谷原题
- luogu P10469洛谷原题
- luogu SP263洛谷原题
- luogu P10470洛谷原题
- luogu P10471洛谷原题
- luogu P3620洛谷原题
- luogu P6033洛谷原题
基本数据结构-习题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 14 题
栈与表达式
flowchart TD nPRE0(["上一节例题<br/>P1044 栈"]):::pre nP10472["P10472 括号画家"] nP10473["P10473 表达式计算 4"] nPRE0 -.-> nP10472 nP10472 --> nP10473 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P10472 括号画家是栈判匹配,P10473 表达式计算 4 在它之上做中缀转后缀。
单调结构与贪心
flowchart TD nPRE1(["上一节例题<br/>P10465 双端队列"]):::pre nP1886["P1886 单调队列"] nP5763["P5763 内存分配"] nP1801["P1801 黑匣子"] nP10478["P10478 生日礼物"] nPRE1 -.-> nP1886 nPRE1 -.-> nP5763 nP1886 --> nP5763 nP1801 --> nP10478 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P1886 滑动窗口是单调队列模板,P5763 内存分配用它维护可用区间;P1801 黑匣子是对顶堆,P10478 生日礼物是堆 + 反悔贪心。
哈希
flowchart TD nPRE2(["上一节例题<br/>P10468 兔子与兔子"]):::pre nP10474["P10474 Matrix 矩阵哈希"] nP10475["P10475 Milking Grid"] nP10476["P10476 Necklace"] nUVA11362["UVA11362 Phone List"] nPRE2 -.-> nP10474 nP10474 --> nP10475 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P10474 是矩阵哈希,P10475 把它用到多行匹配上,P10476 Necklace 与 UVA11362 Phone List 是另外两个哈希场景。
P1155(双栈排序)、UVA1330(最大子矩形)、P10477(树同构)、P10479(匹配统计)与上面三张图没有前置关系。
- luogu P10472洛谷原题
- luogu P10473洛谷原题
- luogu UVA1330洛谷原题
- luogu P1155洛谷原题
- luogu P5763洛谷原题
- luogu P10474洛谷原题
- luogu P10475洛谷原题
- luogu P10476洛谷原题
- luogu UVA11362洛谷原题
- luogu P10477洛谷原题
- luogu P10478洛谷原题
- luogu P10479洛谷原题
搜索-例题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 20 题
DFS 与剪枝
flowchart TD nP10483["P10483 小猫爬山"] nP1120["P1120 小木棍"] nP1731["P1731 生日蛋糕"] nUVA529["UVA529 Addition Chains"] nP1120 --> nP1731 nUVA529 --> nP10483
P1120 小木棍是剪枝集大成的一题,P1731 生日蛋糕是同类的可行性剪枝;UVA529 迭代加深是 P10483 小猫爬山的前置思路。
数独
flowchart TD nP10481["P10481 Sudoku"] nP10482["P10482 Sudoku 2"] nUVA1309["UVA1309 Sudoku 2"] nP10481 --> nP10482 nP10482 --> nUVA1309
三题是数独的三步:P10481 基本 DFS 加剪枝,P10482 加位运算优化,UVA1309 是同一题的英文版。
最短路式搜索
flowchart TD nP4667["P4667 Switch the Lamp"] nP10485["P10485 Bloxorz I"] nUVA589["UVA589 Pushing Boxes"] nUVA11367["UVA11367 Full Tank?"] nP4667 --> nP10485 nP10485 --> nUVA589 nP4667 --> nUVA11367
P4667 用 0-1 BFS 把搜索写成最短路,P10485 Bloxorz 是多状态 BFS,UVA589 要再叠一层「推箱子」状态,UVA11367 把状态加上油量。
迭代加深与 A*
flowchart TD nP1379["P1379 八数码难题"] nP10488["P10488 Booksort"] nUVA1343["UVA1343 旋转游戏"] nUVA1603["UVA1603 破坏正方形"] nP10484["P10484 送礼物"] nP2901["P2901 Cow Jogging"] nP1379 --> nP10488 nUVA1343 --> nUVA1603 nP10484 --> nP2901
P1379 八数码是双向 BFS 与 IDA* 的经典入口,P10488 Booksort 是它的 IDA* 变体;UVA1343 → UVA1603 是估值函数逐步加强;P10484 送礼物折半搜索之后 P2901 做 k 短路。
状态搜索
flowchart TD nP10480["P10480 可达性统计"] nP1256["P1256 显示图像"] nP10487["P10487 Nightmare II"] nP10480 --> nP1256
P10480 可达性统计用状压记可达集合,P1256 显示图像是 BFS 连通块;P10487 Nightmare II 是双向 BFS。
- luogu P10480洛谷原题
- luogu P10481洛谷原题
- luogu P10482洛谷原题
- luogu P10483洛谷原题
- luogu P1731洛谷原题
- luogu UVA1309洛谷原题
- luogu UVA529洛谷原题
- luogu P10484洛谷原题
- luogu P10485洛谷原题
- luogu P1256洛谷原题
- luogu UVA589洛谷原题
- luogu P4667洛谷原题
- luogu UVA11367洛谷原题
- luogu P10487洛谷原题
- luogu P10488洛谷原题
- luogu UVA1603洛谷原题
- luogu UVA1343洛谷原题
- luogu P2901洛谷原题
搜索-习题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 13 题
DFS 剪枝
flowchart TD nPRE0(["上一节例题<br/>P1120 小木棍"]):::pre nP1074["P1074 靶形数独"] nP1092["P1092 虫食算"] nP1312["P1312 Mayan 游戏"] nP2324["P2324 骑士精神"] nPRE0 -.-> nP1074 nPRE0 -.-> nP1312 nP1074 --> nP1092 nP1312 --> nP2324 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P1074 靶形数独是数独 + 剪枝,P1092 虫食算是同类的字母约束搜索;P1312 Mayan 游戏是 DFS 模拟,P2324 骑士精神是 IDA*。
迭代加深与重复搜索
flowchart TD nPRE1(["上一节例题<br/>P1379 八数码"]):::pre nP10489["P10489 The Buses"] nP10490["P10490 Missile Defence"] nUVA1505["UVA1505 Flood-it!"] nP10493["P10493 Bloxorz II"] nPRE1 -.-> nP10489 nP10489 --> nP10490 nUVA1505 --> nP10493 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P10489 与 P10490 都是「枚举深度再搜索」;UVA1505 Flood-it! 是 IDA* 的估值函数练习,P10493 Bloxorz II 是它的多状态版。
网格 BFS
flowchart TD nPRE2(["上一节例题<br/>P10487 Nightmare II"]):::pre nP2960["P2960 Milkweed"] nP10491["P10491 Chivalrous Cow"] nP10492["P10492 Weather Forecast"] nPRE2 -.-> nP2960 nP2960 --> nP10491 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P2960 是网格 BFS 模板,P10491 是它在八方向上的变体;P10492 Weather Forecast 要按时间维护状态。
P1032(字串变换)与 P10494(Power Hungry Cows)与上面三张图没有前置关系。
- luogu P10489洛谷原题
- luogu P10490洛谷原题
- luogu P10491洛谷原题
- luogu P10492洛谷原题
- luogu P10493洛谷原题
- luogu P10494洛谷原题
- luogu UVA1505洛谷原题
数学知识-例题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 24 题
筛法与反素数
flowchart TD nP3383["P3383 线性筛素数"] nUVA10140["UVA10140 Prime Distance"] nP10495["P10495 阶乘分解"] nP1463["P1463 反素数"] nP3383 --> nUVA10140 nP10495 --> nP1463
P3383 线性筛是入口,UVA10140 是区间筛;P10495 阶乘分解之后 P1463 反素数要用同一套质因数视角。
约数与中国剩余定理
flowchart TD nP1072["P1072 Hankson 的趣味题"] nP1082["P1082 同余方程"] nP4777["P4777 扩展 CRT"] nP2261["P2261 余数求和"] nP1082 --> nP4777
P1072 要找约数、P2261 整除分块,两题都在 gcd 与同余的框架里;P1082 同余方程是 P4777 扩展 CRT 的前置。
矩阵与高斯消元
flowchart TD nP1939["P1939 矩阵加速"] nP10498["P10498 石头游戏"] nP4035["P4035 球形空间产生器"] nP10499["P10499 开关问题"] nP1939 --> nP10498 nP1939 --> nP4035 nP4035 --> nP10499
P1939 矩阵加速之后 P10498 石头游戏是矩阵套模拟;P4035 高斯消元之后 P10499 开关问题把消元搬到异或上。
线性基与贪心
flowchart TD nP3265["P3265 装备购买"] nP10500["P10500 Rainbow 的信号"] nP3265 --> nP10500
P3265 装备购买是线性基 + 贪心,P10500 Rainbow 的信号是线性基的另一种统计。
组合与反演
flowchart TD nP1313["P1313 计算系数"] nP4778["P4778 Counting swaps"] nP2480["P2480 古代猪文"] nCF451E["CF451E Devu and Flowers"] nP3455["P3455 ZAP-Queries"] nP1313 --> nP4778 nP2480 --> nP3455
P1313 二项式定理之后 P4778 要数置换,P2480 古代猪文是 CRT + Lucas,P3455 是莫比乌斯反演;CF451E 是容斥 + 组合。
概率与博弈
flowchart TD nP4316["P4316 绿豆蛙的归宿"] nUVA12369["UVA12369 Cards"] nP10501["P10501 Cutting Game"] nP4316 --> nUVA12369 nUVA12369 --> nP10501
P4316 是 DAG 上期望 DP,UVA12369 算期望收益,P10501 Cutting Game 是 SG 函数。
P2158 仪仗队只用到欧拉函数,P10496 The Luckiest Number 是纯推导题,两者与本节其他题都没有前置关系。
- luogu UVA10140洛谷原题
- luogu P10495洛谷原题
- luogu P1463洛谷原题
- luogu P2261洛谷原题
- luogu P2158洛谷原题
- luogu P10496洛谷原题
- luogu P4777洛谷原题
- luogu P1939洛谷原题
- luogu P10498洛谷原题
- luogu P4035洛谷原题
- luogu P10499洛谷原题
- luogu P3265洛谷原题
- luogu P1313洛谷原题
- luogu P4778洛谷原题
- luogu P2480洛谷原题
- luogu CF451E洛谷原题
- luogu P3455洛谷原题
- luogu P10500洛谷原题
- luogu UVA12369洛谷原题
- luogu P10501洛谷原题
数学知识-习题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 17 题
欧拉函数与同余
flowchart TD nPRE0(["上一节例题<br/>P1082 同余方程"]):::pre nP2568["P2568 GCD"] nP2303["P2303 Longge 的问题"] nP1516["P1516 青蛙的约会"] nP1495["P1495 中国剩余定理(CRT)/"] nPRE0 -.-> nP1516 nP2568 --> nP2303 nP1495 --> nP1516 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P2568 求欧拉函数之后 P2303 Longge 的问题直接用它;P1495 CRT 与 P1516 青蛙的约会都在解同余方程。
矩阵与线性递推
flowchart TD nPRE1(["上一节例题<br/>P1939 矩阵加速"]):::pre nP2485["P2485 计算器"] nP10502["P10502 Matrix Power Series"] nP10503["P10503 233 Matrix"] nSP2883["SP2883 Widget Factory"] nPRE1 -.-> nP10502 nP10502 --> nP10503 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P2485 计算器要写三种同余运算,P10502 是矩阵等比求和、P10503 233 Matrix 是同一形态,SP2883 是矩阵消元。
线性基
flowchart TD nP4151["P4151 最大 XOR 和路径"] nP4301["P4301 新 Nim 游戏"] nP4151 --> nP4301
P4151 最大 XOR 和路径先建线性基,P4301 新 Nim 游戏再叠博弈。
计数与概率
flowchart TD nPRE2(["上一节例题<br/>P4316 绿豆蛙的归宿"]):::pre nP4071["P4071 排列计数"] nSP4191["SP4191 天空代码"] nP1850["P1850 换教室"] nP10504["P10504 守卫者的挑战"] nP10506["P10506 魔法珠"] nP10507["P10507 Georgia and Bob"] nPRE2 -.-> nP10504 nP4071 --> nSP4191 nP10504 --> nP1850 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P4071 错排之后 SP4191 是它的组合版;P10504 守卫者的挑战是概率 DP,P1850 换教室是同一套期望 DP 的更大规模。
二分与贪心判定
flowchart TD nP10505["P10505 Dropping Test"]
P10505 Dropping Test 是二分答案的判定题。
P10506(魔法珠)与 P10507(Georgia and Bob)是博弈题,与上面几张图没有前置关系。
- luogu P2568洛谷原题
- luogu P2303洛谷原题
- luogu P1495洛谷原题
- luogu P2485洛谷原题
- luogu P10502洛谷原题
- luogu P10503洛谷原题
- luogu SP2883洛谷原题
- luogu P4151洛谷原题
- luogu P4301洛谷原题
- luogu P4071洛谷原题
- luogu SP4191洛谷原题
- luogu P10504洛谷原题
- luogu P1850洛谷原题
- luogu P10505洛谷原题
- luogu P10506洛谷原题
- luogu P10507洛谷原题
数据结构进阶-例题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 21 题
并查集
flowchart TD nP1955["P1955 程序自动分析"] nP1196["P1196 银河英雄传说"] nP5937["P5937 Parity Game"] nP2024["P2024 食物链"] nP1955 --> nP1196 nP1196 --> nP5937 nP5937 --> nP2024
P1955 是并查集 + 离散化,P1196 银河英雄传说要维护带权距离,P5937 把它变成边带权判奇偶,P2024 食物链再到种类并查集。
树状数组与线段树
flowchart TD nP10589["P10589 楼兰图腾"] nP3368["P3368 树状数组 2"] nP3372["P3372 线段树 1"] nP10497["P10497 Lost Cows"] nSP1716["SP1716 GSS3"] nP10463["P10463 Interval GCD"] nP3368 --> nP3372 nP3372 --> nSP1716 nP3372 --> nP10463 nP3368 --> nP10589
P3368 树状数组 2 是区间改单点查,P3372 线段树 1 是区间改区间查,之后 SP1716 求最大子段、P10463 求区间 gcd;P10589 用树状数组数逆序对,P10497 Lost Cows 用树状数组倒推。
扫描线与离散化
flowchart TD nP5490["P5490 矩形面积并"] nP1502["P1502 窗口的星星"] nP5490 --> nP1502
P5490 扫描线求矩形面积并,P1502 窗口的星星是扫描线 + 线段树。
分块与莫队
flowchart TD nP4168["P4168 蒲公英"] nP1494["P1494 小 Z 的袜子"] nP10590["P10590 磁力块"] nP4168 --> nP1494
P4168 蒲公英是分块求众数,P1494 小 Z 的袜子是莫队模板;P10590 磁力块是分块 + BFS。
点分治与平衡树
flowchart TD nP4178["P4178 Tree"] nP3369["P3369 普通平衡树"] nP4169["P4169 天使玩偶"] nP2617["P2617 Dynamic Rankings"] nP4735["P4735 最大异或和"] nP4178 --> nP2617 nP3369 --> nP4169
P4178 Tree 是点分治模板,P2617 带修区间第 k 小需要树套树;P3369 普通平衡树之后 P4169 用 CDQ 求动态最近点,P4735 是可持久化 Trie。
UVA1316 Supermarket 是堆加贪心的应用题,与本节其他题没有前置关系。
- luogu P10589洛谷原题
- luogu P10497洛谷原题
- luogu SP1716洛谷原题
- luogu P10463洛谷原题
- luogu P5490洛谷原题
- luogu P1502洛谷原题
- luogu P4168洛谷原题
- luogu P10590洛谷原题
- luogu P4178洛谷原题
- luogu P4169洛谷原题
- luogu P2617洛谷原题
数据结构进阶-习题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 14 题
并查集扩展
flowchart TD nPRE0(["上一节例题<br/>P2024 食物链"]):::pre nP1525["P1525 关押罪犯"] nP10686["P10686 Rochambeau"] nP10687["P10687 True Liars"] nP3402["P3402 可持久化并查集"] nPRE0 -.-> nP1525 nPRE0 -.-> nP10686 nP1525 --> nP10686 nP10686 --> nP10687 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P1525 关押罪犯是种类并查集,P10686 与 P10687 都是它的英文版变体;P3402 是可持久化并查集。
线段树
flowchart TD nPRE1(["上一节例题<br/>P3372 线段树 1"]):::pre nP10688["P10688 Buy Tickets"] nP2894["P2894 Hotel G"] nP1856["P1856 矩形周长"] nSP10264["SP10264 Meteors"] nP4135["P4135 作诗"] nPRE1 -.-> nP10688 nPRE1 -.-> nP2894 nP10688 --> nP2894 nP2894 --> nP1856 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P10688 Buy Tickets 练单点插队,P2894 Hotel 是区间合并,P1856 矩形周长要在线段树上维护扫描线信息;SP10264 与 P4135 分别是整体二分与分块。
点分治与 CDQ
flowchart TD nPRE2(["上一节例题<br/>P4178 Tree"]):::pre nP4149["P4149 Race"] nP4390["P4390 Mokia"] nPRE2 -.-> nP4149 nP4149 --> nP4390 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P4149 Race 是点分治,P4390 Mokia 是 CDQ 分治求矩形和。
P2234(营业额统计)、P10689(SuperMemo)、P10690(Fotile 模拟赛 L)与上面三张图没有前置关系。
- luogu P10686洛谷原题
- luogu P10687洛谷原题
- luogu P10688洛谷原题
- luogu P2894洛谷原题
- luogu P1856洛谷原题
- luogu P4135洛谷原题· P4135 作诗
- luogu P4149洛谷原题
- luogu P10689洛谷原题
- luogu P4390洛谷原题
- luogu SP10264洛谷原题
- luogu P10690洛谷原题
- luogu P3402洛谷原题
动态规划-例题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 43 题
线性 DP
flowchart TD nSP15637["SP15637 Picture Permutations"] nP10954["P10954 LCIS"] nP2893["P2893 Making the Grade"] nSP703["SP703 Mobile Service"] nSP15637 --> nP10954 nP10954 --> nSP703
SP15637 是线性 DP 的入门建模,P10954 LCIS 是 LIS 与 LCS 的结合,SP703 Mobile Service 是多维状态线性 DP;P2893 是保序 + 中位数。
背包
flowchart TD nP1164["P1164 小 A 点菜"] nP10955["P10955 正整数拆分"] nP10973["P10973 Coins"] nP1164 --> nP10955 nP10955 --> nP10973
P1164 是计数背包,P10955 正整数拆分是同一形态,P10973 Coins 是多重背包的优化版。
区间 DP
flowchart TD nP1775["P1775 石子合并(弱化版)"] nP4342["P4342 Polygon"] nP10956["P10956 金字塔"] nP10957["P10957 环路运输"] nP6064["P6064 Naptime G"] nP1775 --> nP4342 nP4342 --> nP10956 nP1775 --> nP10957 nP10957 --> nP6064
P1775 石子合并是区间 DP 模板,P4342 Polygon 要同时维护最大最小,P10956 金字塔是区间 DP 判回文;P10957 环路运输之后 P6064 Naptime 是环形 DP。
树形 DP
flowchart TD nP1352["P1352 没有上司的舞会"] nP2014["P2014 选课"] nP10974["P10974 Accumulation Degree"] nP1352 --> nP2014 nP2014 --> nP10974
P1352 没有上司的舞会是树形 DP 入口,P2014 选课是树上背包,P10974 换根求最大流。
状压 DP
flowchart TD nP10975["P10975 蒙德里安的梦想"] nP2704["P2704 炮兵阵地"] nP3959["P3959 宝藏"] nP10972["P10972 I-Country"] nP10975 --> nP2704 nP10975 --> nP3959 nP10975 --> nP10972
P10975 蒙德里安的梦想是轮廓线状压,P2704 炮兵阵地是逐行状压,P3959 宝藏把状压当最短路,P10972 I-Country 是轮廓线状压的下一档。
单调队列与斜率优化
flowchart TD nP10977["P10977 Cut the Sequence"] nP2365["P2365 任务安排"] nP10979["P10979 任务安排 2"] nP5785["P5785 任务安排"] nCF311B["CF311B Cats Transport"] nP1912["P1912 诗人小G"] nP2365 --> nP10979 nP10979 --> nP5785 nP10979 --> nCF311B nP5785 --> nP1912
P10977 用单调队列优化,P2365 → P10979 → P5785 是任务安排三步曲(依次加斜率优化、加精度要求),CF311B 是同类的斜率优化;P1912 诗人小 G 是决策单调性。
计数与统计
flowchart TD nP10976["P10976 统计重复个数"] nP1081["P1081 开车旅行"] nP4644["P4644 Cleaning Shifts"] nUVA12983["UVA12983 Battle of Chibi"] nP10978["P10978 Fence"] nP5569["P5569 石子合并"] nUVA12983 --> nP10978 nP10976 --> nP1081
UVA12983 求 LIS 计数,P10978 Fence 是它的变体;P10976 统计重复个数与 P1081 开车旅行都是倍增 + DP,P4644 与 P5569 分别是线段树优化与四边形不等式。
图上计数
flowchart TD nCF559C["CF559C Gerald and Giant Chess"] nP10982["P10982 Connected Graph"] nP6596["P6596 How Many of Them"] nP7690["P7690 A decorative fence"] nP10958["P10958 启示录"] nP10959["P10959 月之谜"] nCF559C --> nP10982 nP10958 --> nP6596 nP10959 --> nP7690
CF559C 用容斥数路径,P10982 数连通图;P10958 与 P6596 是数位 DP 的两个方向,P10959 与 P7690 是同一模板换题面。
P1006(双线程网格 DP)、P10971(排序后 DP)、CF24D(高斯消元加期望)、UVA323(背包式 DP)是四种不同建模,各自独立;P10980 与 P10981 是任务安排的 4.1 / 4.2 版(洛谷暂无数据),想挑战可以直接看题面。
- luogu SP15637洛谷原题
- luogu P10954洛谷原题
- luogu P2893洛谷原题
- luogu SP703洛谷原题
- luogu P1006洛谷原题
- luogu P10972洛谷原题
- luogu P10971洛谷原题
- luogu P10955洛谷原题
- luogu P10973洛谷原题
- luogu UVA323洛谷原题
- luogu P10956洛谷原题
- luogu P10974洛谷原题
- luogu P6064洛谷原题
- luogu P10957洛谷原题
- luogu CF24D洛谷原题
- luogu P10975洛谷原题
- luogu P10976洛谷原题
- luogu P1081洛谷原题
- luogu P4644洛谷原题
- luogu UVA12983洛谷原题
- luogu P10977洛谷原题
- luogu P10978洛谷原题
- luogu P2365洛谷原题
- luogu P10979洛谷原题
- luogu P10980洛谷原题
- luogu P10981洛谷原题
- luogu CF311B洛谷原题
- luogu P1912洛谷原题
- luogu P5569洛谷原题
- luogu CF559C洛谷原题
- luogu P10982洛谷原题
- luogu P6596洛谷原题
- luogu P7690洛谷原题
- luogu P10958洛谷原题
- luogu P10959洛谷原题
动态规划-习题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 31 题
线性与区间
flowchart TD nPRE0(["上一节例题<br/>P1775 石子合并"]):::pre nP1541["P1541 乌龟棋"] nP1854["P1854 花店橱窗"] nP1063["P1063 能量项链"] nP5752["P5752 棋盘分割"] nUVA10559["UVA10559 Blocks"] nP10961["P10961 划分大理石"] nPRE0 -.-> nP1063 nP1541 --> nP1854 nP1063 --> nP5752 nP5752 --> nUVA10559 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P1541 乌龟棋是多维线性 DP,P1854 花店橱窗是同一形态;P1063 能量项链是环形区间 DP,P5752 棋盘分割与 UVA10559 方块消除都在它之上。
树形与状压
flowchart TD nPRE1(["上一节例题<br/>P1352 没有上司的舞会"]):::pre nUVA1292["UVA1292 Strategic game"] nUVA1222["UVA1222 Bribing FIPA"] nP1879["P1879 Corn Fields G"] nP7689["P7689 Bugs Integrated"] nP10963["P10963 Islands and Bridges"] nPRE1 -.-> nUVA1292 nUVA1292 --> nUVA1222 nP10963 --> nP7689 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
UVA1292 是树上最小覆盖,UVA1222 是树上背包;P1879 Corn Fields 是状压模板,P7689 Bugs 是轮廓线状压,P10963 是状压 + 路径计数。
优化手段
flowchart TD nPRE2(["上一节例题<br/>P10979 任务安排 2"]):::pre nP4954["P4954 Tower of Hay"] nP2569["P2569 股票交易"] nP3628["P3628 特别行动队"] nP4767["P4767 邮局 加强版"] nP10967["P10967 邮局(原始版)"] nP10966["P10966 K-Anonymous Sequence"] nP10964["P10964 Fence Obstacle"] nPRE2 -.-> nP3628 nPRE2 -.-> nP2569 nP4767 --> nP10967 nP3628 --> nP4767 nP2569 --> nP10966 nP4954 --> nP10964 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P3628 特别行动队与 P4767 邮局都是斜率优化(后者加强版),P10967 是原始版;P2569 股票交易是单调队列优化,P4954 与 P10964 是两种不同的单调性处理。
数位与计数
flowchart TD nPRE3(["上一节例题<br/>P10959 月之谜"]):::pre nP10968["P10968 扑克牌"] nUVA1640["UVA1640 统计问题"] nP6218["P6218 Round Numbers"] nP2687["P2687 逢低吸纳"] nSP33["SP33 Trip"] nP10960["P10960 SUBSTRACT"] nPRE3 -.-> nUVA1640 nUVA1640 --> nP6218 nP10968 --> nSP33 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
UVA1640 统计数字出现次数,P6218 Round Numbers 是同一模板的变体;P2687 与 SP33 是两道路径计数。
字符串 DP
flowchart TD nPRE4(["上一节例题<br/>P10956 金字塔"]):::pre nUVA1630["UVA1630 串折叠"] nP2400["P2400 秘密文件"] nPRE4 -.-> nUVA1630 nUVA1630 --> nP2400 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
UVA1630 串折叠是区间 DP,P2400 秘密文件是它的加强版。
期望与其它
flowchart TD nP3211["P3211 XOR 和路径"] nSP16809["SP16809 Estimation"] nP3211 --> nSP16809
P3211 XOR 和路径是图上期望,SP16809 是同一类期望 DP。
P5694(陨石的秘密)、P10962(Computer)、P10965(Largest Submatrix)与上面六张图没有前置关系。
- luogu P1541洛谷原题
- luogu P2687洛谷原题
- luogu SP33洛谷原题
- luogu P10960洛谷原题
- luogu P5694洛谷原题
- luogu P10961洛谷原题
- luogu UVA1630洛谷原题
- luogu P2400洛谷原题
- luogu P5752洛谷原题
- luogu UVA10559洛谷原题
- luogu UVA1292洛谷原题
- luogu UVA1222洛谷原题
- luogu P10962洛谷原题
- luogu P3211洛谷原题
- luogu P10963洛谷原题
- luogu P7689洛谷原题
- luogu P10964洛谷原题
- luogu SP16809洛谷原题
- luogu P4954洛谷原题
- luogu P10965洛谷原题
- luogu P10966洛谷原题
- luogu P3628洛谷原题
- luogu P10967洛谷原题
- luogu P10968洛谷原题
- luogu UVA1640洛谷原题
- luogu P6218洛谷原题
图论-例题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 42 题
最短路
flowchart TD nP2886["P2886 Cow Relays"] nP10927["P10927 最小环"] nP1948["P1948 Telephone Lines"] nP1073["P1073 最优贸易"] nP3008["P3008 Roads and Planes"] nP2886 --> nP10927 nP1948 --> nP1073 nP1073 --> nP3008
P2886 Cow Relays 用矩阵快速幂做最短路,P10927 最小环同源;P1948 分层图之后 P1073 最优贸易也分层,P3008 要处理负权与连通块。
生成树
flowchart TD nP1073["P1073 最优贸易"] nP10928["P10928 走廊泼水节"] nP10929["P10929 黑暗城堡"] nP4951["P4951 Earthquake"] nP4180["P4180 严格次小生成树"] nP10928 --> nP10929 nP10929 --> nP4951 nP10929 --> nP4180
生成树一支:P10928 走廊泼水节是 MST 计数,P10929 黑暗城堡数最短路树,P4951 Earthquake 是分数规划 + MST,P4180 严格次小生成树。
树上问题
flowchart TD nP1600["P1600 天天爱跑步"] nP3629["P3629 巡逻"] nP10930["P10930 异象石"] nP1099["P1099 树网的核"] nP1084["P1084 疫情控制"] nP1600 --> nP3629 nP3629 --> nP10930 nP1099 --> nP1084
P1600 天天爱跑步是树上差分,P3629 巡逻是求直径,P10930 异象石用虚树;P1099 树网的核之后 P1084 疫情控制要二分 + 倍增。
Tarjan 与连通性
flowchart TD nP3469["P3469 BLO-Blockade"] nP2868["P2868 Sightseeing Cows"] nSP2878["SP2878 Knights"] nP6066["P6066 Watchcow"] nP2746["P2746 校园网"] nP3469 --> nP2746 nSP2878 --> nP6066
P3469 割点与 P2746 缩点是 Tarjan 的两面;P2868 是 01 分数规划 + 判负环,SP2878 与 P6066 是欧拉回路。
2-SAT 与差分约束
flowchart TD nP10969["P10969 Katu Puzzle"] nP10935["P10935 银河"] nP10969 --> nP10935
P10969 Katu Puzzle 是 2-SAT 模板,P10935 银河是差分约束 + 最长路。
二分图匹配
flowchart TD nP5182["P5182 棋盘覆盖"] nP10937["P10937 車的放置"] nUVA1411["UVA1411 Ants"] nUVA1194["UVA1194 Machine Schedule"] nP6062["P6062 Muddy Fields"] nP10939["P10939 骑士放置"] nP5182 --> nP10937 nP10937 --> nP10939 nUVA1194 --> nP6062
P5182 棋盘覆盖是二分图匹配入口,P10937 車的放置是同一建模,P10939 骑士放置再加障碍;UVA1194 与 P6062 是 König 定理的两个用法。
网络流
flowchart TD nSP300["SP300 Cable TV Network"] nP2045["P2045 方格取数加强版"] nP10940["P10940 舞动的夜晚"] nSP300 --> nP2045 nP2045 --> nP10940
SP300 求点连通度,P2045 方格取数加强版是最小费用最大流,P10940 舞动的夜晚判可行边。
其它图论
flowchart TD nP1347["P1347 排序"] nP10934["P10934 西瓜种植"] nP10931["P10931 闇の鎖"] nP1347 --> nP10934
P1347 排序是拓扑排序,P10934 西瓜种植要用差分约束;P10931 闇の鎖是树上差分。
P10932(Freda 的传呼机)、P10933(创世纪)、P4381(Island)、P10970(PKU 远足)、P10936(导弹防御塔)、P10938(Vani 和 Cl2 捉迷藏)、P1525(关押罪犯)、P4556(雨天的尾巴)、UVA1537(Picnic Planning)与上面七张图没有前置关系。
- luogu P2886洛谷原题
- luogu P10927洛谷原题
- luogu P3008洛谷原题
- luogu UVA1537洛谷原题
- luogu P10928洛谷原题
- luogu P10929洛谷原题
- luogu P3629洛谷原题
- luogu P10930洛谷原题
- luogu P1084洛谷原题
- luogu P10931洛谷原题
- luogu P4556洛谷原题
- luogu P10932洛谷原题
- luogu P10933洛谷原题
- luogu P4381洛谷原题
- luogu P10934洛谷原题
- luogu P2868洛谷原题
- luogu SP2878洛谷原题
- luogu P6066洛谷原题
- luogu P10969洛谷原题
- luogu P10970洛谷原题
- luogu P10935洛谷原题
- luogu P10936洛谷原题
- luogu P5182洛谷原题
- luogu P10937洛谷原题
- luogu UVA1411洛谷原题
- luogu UVA1194洛谷原题
- luogu P6062洛谷原题
- luogu P10938洛谷原题
- luogu P10939洛谷原题
- luogu SP300洛谷原题
- luogu P10940洛谷原题
图论-习题(李煜东《算法竞赛进阶指南》)
洛谷子题单 · 30 题
网络流
flowchart TD nPRE0(["上一节例题<br/>P2045 方格取数加强版"]):::pre nP2740["P2740 草地排水"] nP10944["P10944 u to v?"] nP10945["P10945 Place the Robots"] nP4819["P4819 杀人游戏"] nPRE0 -.-> nP2740 nP2740 --> nP10944 nP10944 --> nP10945 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P2740 草地排水是最大流模板,P10944 是它的判定版,P10945 Place the Robots 是最大流建模;P4819 杀人游戏要用 Tarjan。
欧拉路径与直径
flowchart TD nPRE1(["上一节例题<br/>P6066 Watchcow S"]):::pre nUVA302["UVA302 John's trip"] nUVA1184["UVA1184 Air Raid"] nP3304["P3304 直径"] nP2860["P2860 Redundant Paths"] nPRE1 -.-> nUVA302 nUVA302 --> nUVA1184 nP3304 --> nP2860 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
UVA302 是欧拉路径模板,UVA1184 Air Raid 是路径覆盖;P3304 求直径,P2860 在边双之上加边。
匹配与流建模
flowchart TD nPRE2(["上一节例题<br/>UVA1194 Machine Schedule"]):::pre nUVA663["UVA663 Sorting Slides"] nSP741["SP741 Steady Cow"] nUVA11294["UVA11294 Wedding"] nPRE2 -.-> nUVA663 nUVA663 --> nSP741 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
UVA663 排序幻灯片是二分图匹配,SP741 是它的带权版,UVA11294 Wedding 是 2-SAT。
树上与图上计数
flowchart TD nPRE3(["上一节例题<br/>P1600 天天爱跑步"]):::pre nP2047["P2047 社交网络"] nP4281["P4281 紧急集合"] nP10953["P10953 逃不掉的路"] nP4408["P4408 逃学的小孩"] nPRE3 -.-> nP2047 nP2047 --> nP4281 nP4281 --> nP10953 nP10953 --> nP4408 classDef pre fill:#f2f4f7,stroke:#98a2b3,stroke-dasharray:4 3;
P2047 社交网络数最短路条数,P4281 求三个点的 LCA,P10953 逃不掉的路要数必经点,P4408 逃学的小孩是直径 + 树上距离。
其它
flowchart TD nUVA10369["UVA10369 Arctic Network"] nP10941["P10941 Cashier Employment"] nP10942["P10942 GF和猫咪的玩具"] nP3533["P3533 Rendezvous"] nUVA10369 --> nP10942 nP3533 --> nP10941
UVA10369 是 MST 第 k 大连通块,P10942 是同类的距离问题;P3533 Rendezvous 要判环 + LCA,P10941 是差分约束。
P10943 / P10946 / P10947 / P10948 / P10949 / P10950 / P10951、UVA1327 / UVA1627 / UVA1464、P3225(矿场搭建)与上面五张图没有前置关系。
- luogu UVA1184洛谷原题
- luogu UVA10369洛谷原题
- luogu P10941洛谷原题
- luogu P2740洛谷原题
- luogu P10942洛谷原题
- luogu P10943洛谷原题
- luogu P10944洛谷原题
- luogu UVA302洛谷原题
- luogu UVA1327洛谷原题
- luogu P10945洛谷原题
- luogu P10946洛谷原题
- luogu P3533洛谷原题
- luogu P10947洛谷原题
- luogu UVA663洛谷原题
- luogu SP741洛谷原题
- luogu UVA1627洛谷原题
- luogu UVA1464洛谷原题
- luogu UVA11294洛谷原题
- luogu P10948洛谷原题
- luogu P10949洛谷原题
- luogu P10950洛谷原题
- luogu P10951洛谷原题
- luogu P3304洛谷原题
- luogu P10953洛谷原题