罗勇军《算法竞赛》题单
按洛谷罗勇军《算法竞赛》书籍题单整理的完整练习路径。
洛谷罗勇军《算法竞赛》题单
本题单共收录 10 个子题单、696 个题目条目、682 道不同题目。
其中有 14 道题出现在多个学习阶段,形成 14 个重复条目。这些条目按洛谷原分组保留,并共享完成进度。
题目按洛谷书籍题单的子题单顺序排列。
目录
怎么看小节里的图
每个小节开头有若干张 flowchart TD 有向图,画的是本节题目之间的做题先后关系。
- 节点写「题号 + 简短标题」,就是本节题单里列的那几道题。
- 箭头
A → B表示硬前置:B 会用到 A 建立起来的套路,先把 A 做完再碰 B,能省掉大量原地打转。 - 图里只画有前置关系的题。 没有出现在任何图里的题,在每节末尾单独列出,它们不依赖本节任何题,可以随时插进来做。
- 四个大题(高级数据结构、动态规划、数论和线性代数、图论)题量上百,改用知识点级路线图:节点是子专题加它的起始题,箭头是子专题之间的先后;每张图下面一句话列出该子专题的其余题目。
- 图只画节内关系,跨小节的依赖写在每节正文里。
- 同一道题出现在多个小节时,每节的图都把它完整画一次,因为它在不同小节的入边并不相同。
基础数据结构 - 罗勇军《算法竞赛》
洛谷子题单 · 31 题
栈与表达式
flowchart TD nP1449["P1449 后缀表达式"] nP1739["P1739 表达式括号匹配"] nP1981["P1981 表达式求值"] nP1175["P1175 表达式的转换"] nP1449 --> nP1739 nP1449 --> nP1981 nP1981 --> nP1175
P1449 后缀表达式是栈的入口,P1739 括号匹配是它的最简版,P1981 → P1175 是中缀求值再到表达式转换。
单调栈
flowchart TD nP2947["P2947 Look Up S"] nP5788["P5788 单调栈"] nP2947 --> nP5788
P2947 Look Up 是「找右边第一个更大值」的单调栈,P5788 是同一模板的裸题。
队列基础
flowchart TD nP1996["P1996 约瑟夫问题"] nP1160["P1160 队列安排"] nP1540["P1540 机器翻译"] nP2776["P2776 小组队列"] nP1996 --> nP1160 nP1996 --> nP1540 nP1540 --> nP2776
P1996 约瑟夫问题用队列模拟,P1160 队列安排改成链表,P1540 机器翻译是先进先出缓存,P2776 小组队列要同时维护两层队列。
单调队列
flowchart TD nP1886["P1886 单调队列"] nP1440["P1440 求m区间内的最小值"] nP2032["P2032 扫描"] nP1714["P1714 切蛋糕"] nP2422["P2422 良好的感觉"] nP1886 --> nP1440 nP1886 --> nP2032 nP1886 --> nP1714 nP1886 --> nP2422
P1886 滑动窗口是模板,P1440 与 P2032 是同一模板换题面,P1714 切蛋糕把前缀和塞进队列,P2422 良好的感觉找「最小值乘区间和」。
单调队列优化 DP
flowchart TD nP1886["P1886 单调队列"] nP1725["P1725 琪露诺"] nP3957["P3957 跳房子"] nP2629["P2629 好消息,坏消息"] nP1886 --> nP1725 nP1886 --> nP3957 nP1886 --> nP2629
同样从 P1886 出发:P1725 琪露诺把窗口套在 DP 转移上,P3957 跳房子再叠一次二分答案,P2629 是好消息坏消息的环形前缀和处理。
二叉树
flowchart TD nP1087["P1087 FBI 树"] nP1030["P1030 求先序排列"] nP1229["P1229 遍历问题"] nP1305["P1305 新二叉树"] nP5018["P5018 对称二叉树"] nP1087 --> nP1030 nP1030 --> nP1229 nP1305 --> nP5018
P1087 FBI 树练建树与遍历,P1030 求先序是已知两种遍历推第三种,P1229 数方案;P1305 新二叉树按描述建树,P5018 对称二叉树在它之上做匹配。
堆与贪心
flowchart TD nP3378["P3378 堆"] nP1090["P1090 合并果子"] nP2168["P2168 荷马史诗"] nP3045["P3045 Cow Coupons G"] nP3378 --> nP1090 nP1090 --> nP2168 nP1090 --> nP3045
P3378 是堆模板,P1090 合并果子是堆 + 贪心,P2168 荷马史诗是它的 k 叉版,P3045 Cow Coupons 要两个堆互相反悔。
对顶堆
flowchart TD nP3378["P3378 堆"] nP1168["P1168 中位数"] nP2085["P2085 最小函数值"] nP2827["P2827 蚯蚓"] nP3378 --> nP1168 nP3378 --> nP2085 nP2085 --> nP2827
P1168 中位数是对顶堆模板,P2085 最小函数值是多路取最小,P2827 蚯蚓用单调队列把堆替换掉。
P5597 复读是树上 DP + 字符串,与本节其他题没有前置关系。
- · P2032 扫描
- luogu P2422洛谷原题
- luogu P3957洛谷原题
- luogu P5788洛谷原题
- luogu P5597洛谷原题
- luogu P3045洛谷原题
基本算法 - 罗勇军《算法竞赛》
洛谷子题单 · 47 题
二分答案
flowchart TD nP1824["P1824 进击的奶牛"] nP2678["P2678 跳石头"] nP1419["P1419 寻找段落"] nP1083["P1083 借教室"] nP1314["P1314 聪明的质监员"] nP3745["P3745 期末考试"] nP1824 --> nP2678 nP1824 --> nP1419 nP1824 --> nP1083 nP1083 --> nP1314 nP2678 --> nP3745
P1824 进击的奶牛是二分答案模板,之后 P2678 跳石头、P1419 寻找段落、P1083 借教室都是「二分答案加 check」;P1083 → P1314 是差分套二分,P2678 → P3745 是同一模型的更复杂版本。
三分
flowchart TD nP3382["P3382 三分"] nP1883["P1883 三分"] nP3382 --> nP1883
P3382 三分求单峰函数极值是模板,P1883 把多组函数取 max 之后仍然是单峰的。
ST 表与区间最值
flowchart TD nP3865["P3865 ST 表 & RMQ 问…"] nP2880["P2880 Balanced Lineup G"] nP2251["P2251 质量检测"] nP1816["P1816 忠诚"] nP1198["P1198 最大数"] nP5012["P5012 水の数列"] nP3865 --> nP2880 nP3865 --> nP2251 nP3865 --> nP1816 nP3865 --> nP1198 nP3865 --> nP5012
P3865 ST 表是模板,P2880 / P2251 / P1816 都是区间最值的直接套用,P1198 最大数要在线增量建表,P5012 是水の数列。
倍增进阶
flowchart TD nP3865["P3865 ST 表 & RMQ 问…"] nP4155["P4155 国旗计划"] nP5465["P5465 星际穿越"] nP3295["P3295 萌萌哒"] nP5344["P5344 逛森林"] nP3865 --> nP4155 nP3865 --> nP5465 nP3865 --> nP3295 nP3865 --> nP5344
同样从 P3865 出发:P4155 国旗计划是区间覆盖上的倍增,P5465 星际穿越是树上倍增,P3295 萌萌哒用倍增合并区间,P5344 逛森林是倍增建虚点。
前缀和与差分
flowchart TD nP3397["P3397 地毯"] nP3406["P3406 海底高铁"] nP4552["P4552 IncDec Sequence"] nP3948["P3948 数据结构"] nP3131["P3131 Subsequences Summi…"] nP2280["P2280 激光炸弹"] nP3397 --> nP3406 nP3397 --> nP4552 nP4552 --> nP3948 nP3131 --> nP2280
P3397 地毯是二维差分,P3406 海底高铁与 P4552 是它的一维应用,P4552 → P3948 再叠一次数据结构;P3131 用到前缀和取模,P2280 是二维前缀和。
邻项交换与排序贪心
flowchart TD nP1093["P1093 奖学金"] nP2652["P2652 同花顺"] nP1080["P1080 国王游戏"] nP2123["P2123 皇后游戏"] nP5521["P5521 梅深不见冬"] nP1093 --> nP2652 nP1080 --> nP2123 nP2123 --> nP5521
P1093 奖学金练多关键字排序,P2652 同花顺是排序加扫描;P1080 国王游戏是邻项交换的经典推导,P2123 皇后游戏是它的变体,P5521 梅深不见冬再到树上。
双指针与排序取数
flowchart TD nP1208["P1208 混合牛奶"] nP4995["P4995 跳跳!"] nP1094["P1094 纪念品分组"] nP2672["P2672 推销员"] nP1208 --> nP4995 nP1208 --> nP1094
P1208 混合牛奶排序后取单价,P4995 跳跳与 P1094 纪念品分组都是排完序之后两头取。
递归与模拟
flowchart TD nP1010["P1010 幂次方"] nP1498["P1498 南蛮图腾"] nP1010 --> nP1498
P1010 幂次方是递归分解,P1498 南蛮图腾是递归画图。
P1102(二分数对)、P1462(二分加最短路)、P1868(线性 DP)、P1493(排序加前缀)、P2048(堆加区间)、P1052(DP 加路径压缩)、P1115(最大子段和)、P1908(归并逆序对)、P1593(因子和)、P1923(第 k 小)、P2097(模拟)、P1199(博弈)与上面八张图都没有前置关系。
- luogu P1868洛谷原题
- luogu P3382洛谷原题· P3382 三分
- luogu P3745洛谷原题
- luogu P1883洛谷原题
- luogu P3865洛谷原题
- luogu P5465洛谷原题
- luogu P3295洛谷原题
- · P1816 忠诚
- luogu P5012洛谷原题
- luogu P5344洛谷原题
- · P3397 地毯
- luogu P1052洛谷原题
- luogu P2672洛谷原题
- luogu P5521洛谷原题
搜索 - 罗勇军《算法竞赛》
洛谷子题单 · 28 题
DFS 与剪枝
flowchart TD nP1120["P1120 小木棍"] nP1074["P1074 靶形数独"] nP1312["P1312 Mayan 游戏"] nP2324["P2324 骑士精神"] nP2346["P2346 四子连棋"] nP1120 --> nP1074 nP1120 --> nP1312 nP1312 --> nP2324 nP1312 --> nP2346
P1120 小木棍是剪枝集大成的一题,P1074 靶形数独与 P1312 Mayan 游戏都在它之上;P1312 → P2324 / P2346 是 IDA* 与模拟类搜索。
网格连通块
flowchart TD nP8662["P8662 全球变暖"] nP1162["P1162 填涂颜色"] nP1506["P1506 拯救 oibh 总部"] nP8662 --> nP1162 nP1162 --> nP1506
P8662 全球变暖是数被淹没的连通块,P1162 填涂颜色把外圈灌满再判断,P1506 拯救 oibh 总部是同一套边界处理。
网格最短路
flowchart TD nP1443["P1443 马的遍历"] nP1126["P1126 机器人搬重物"] nP1649["P1649 Obstacle Course S"] nP3956["P3956 棋盘"] nP1443 --> nP1126 nP1443 --> nP1649 nP1126 --> nP3956
P1443 马的遍历是 BFS 求最短步数模板,P1126 机器人搬重物要加上朝向状态,P1649 加了障碍代价,P3956 棋盘是 0-1 BFS。
折半与状压搜索
flowchart TD nP5194["P5194 Scales S"] nP4799["P4799 世界冰球锦标赛"] nP1433["P1433 吃奶酪"] nP5194 --> nP4799 nP4799 --> nP1433
P5194 Scales S 是折半搜索入门,P4799 世界冰球锦标赛是同一模板的大规模版,P1433 吃奶酪是状压加剪枝。
图上搜索
flowchart TD nP4779["P4779 单源最短路径(标准版)"] nP4667["P4667 Switch the Lamp On"] nP2483["P2483 k 短路"] nP3047["P3047 Nearby Cows G"] nP4779 --> nP4667 nP4779 --> nP2483 nP4779 --> nP3047
P4779 单源最短路是入口,P4667 把 0-1 BFS 写成最短路,P2483 求 k 短路,P3047 Nearby Cows 是树上的距离统计。
P1219(八皇后)、P1019(单词接龙)、P5440(奇迹)、P1378(油滴扩展)、P1118(数字三角形搜索)、P1514(引水入城)、P5195(Knights of Ni)、P1032(字串变换)、P2534(铁盘整理)与上面五张图没有前置关系。
- luogu P8662洛谷原题
- luogu P5440洛谷原题
- luogu P1378洛谷原题
- luogu P1118洛谷原题
- luogu P1506洛谷原题
- luogu P1649洛谷原题
- luogu P5195洛谷原题
- luogu P4667洛谷原题
- luogu P2483洛谷原题
- luogu P2346洛谷原题
- luogu P2534洛谷原题
高级数据结构 - 罗勇军《算法竞赛》
洛谷子题单 · 148 题
第一层:从并查集到线段树
flowchart TD ndsu["并查集<br/>P2024 起"] nbit["树状数组<br/>P3374 起"] nseg["线段树<br/>P3372 起"] ndsu --> nbit nbit --> nseg
这三块是本节的骨架,后面的可持久化、树套树、分块都以它们为前提。
并查集(P2024 起)另有 P1111、P3958、P1525、P4185、P1197、P1196、P1955、P3402;树状数组(P3374 起)另有 P3368、P1908、P1774、P4479、P1966、P3605、P3586、P4054、P4113;线段树(P3372 起)另有 P4514、P3373、P3870、P4145、P6242、P1856、P5490、P4588、P1502、P2471、P2824、P3722、P4097、P4198、P4513、P4556、P5324、P5327、P3960、P3992。
第二层:可持久化与分块
flowchart TD npst["可持久化线段树<br/>P3919 起"] nblock["分块<br/>P2801 起"] nmo["莫队<br/>P2709 起"] npst --> nblock nblock --> nmo
可持久化线段树与分块是两条平行的进阶线,莫队建在分块之上。
可持久化线段树(P3919 起)另有 P3834、P2468、P3302、P3168、P4559、P3293、P2633、P4618;分块(P2801 起)另有 P3396、P3863、P1975、P3710、P2325;莫队(P2709 起)另有 P1972、SP10707、P4168、P4119、P1494、P1903、P5906、P4887、P3674、P3709、P4074、P5501。
第三层:树上的结构
flowchart TD ntree1["树的直径与 LCA<br/>B4016 起"] ncentroid["点分治<br/>P3806 起"] nhld["树链剖分<br/>P3384 起"] ntree1 --> ncentroid ntree1 --> nhld ncentroid --> nhld
先在树上拿到 LCA 与直径这两件工具,再学点分治与树链剖分;树链剖分是后面许多树上套数据结构的载体。
树的直径与 LCA(B4016 起)另有 P3629、P1099、P3128、P1967、P2680、P1600、P3379、P3938、P4281;点分治(P3806 起)另有 P4178、P6329、P2056、P3345、P4183、P5306、P2634、P2664、P3714、P4149、P3241、P4075、P4292;树链剖分(P3384 起)另有 P2146、P3178、P3038、P3313、P2590、P1505、P2486、P3258、P4069、P4211、P4592、P5305、P5354。
第四层:平衡树与动态树
flowchart TD nbst["平衡树与 Splay<br/>P3369 起"] nkdt["KD-Tree<br/>P4148 起"] nlct["LCT 动态树<br/>P3690 起"] nbst --> nlct nbst --> nkdt
平衡树是本节最后一个基础件,KD-Tree 与 LCT 都在它之后。
平衡树与 Splay(P3369 起)另有 P4008、P5055、P3835、P5854、P1377、P5044、P3793、P1440、P4567、P3391、P3850、P5338、P2042、P1110、P3644、P1486、P2710、P3224、P3285、P5321、P5499;KD-Tree(P4148 起)另有 P4169、P4357、P7883、P2479、P3769、P4390、P4475、P2093、P5471;LCT 动态树(P3690 起)另有 P3203、P4338、P1501、P3348、P3703、P4172、P4219、P5489、P2387。
- luogu P3958洛谷原题
- luogu P4185洛谷原题
- luogu P4514洛谷原题
- luogu P1774洛谷原题
- luogu P4479洛谷原题
- luogu P3605洛谷原题
- luogu P3586洛谷原题
- luogu P4054洛谷原题
- luogu P4113洛谷原题
- luogu P3960洛谷原题
- luogu P6242洛谷原题
- luogu P1856洛谷原题
- luogu P5490洛谷原题
- luogu P1502洛谷原题
- luogu P2824洛谷原题
- luogu P3722洛谷原题
- luogu P4097洛谷原题
- luogu P4198洛谷原题
- luogu P4556洛谷原题
- luogu P5324洛谷原题
- luogu P5327洛谷原题
- luogu P2468洛谷原题
- luogu P3302洛谷原题
- luogu P3168洛谷原题
- luogu P4559洛谷原题
- luogu P3293洛谷原题
- luogu P2633洛谷原题
- luogu P4618洛谷原题
- luogu P3919洛谷原题
- luogu P3402洛谷原题
- luogu P2801洛谷原题
- luogu SP10707洛谷原题
- luogu P3396洛谷原题
- luogu P3863洛谷原题· P3863 序列
- luogu P1975洛谷原题
- luogu P3710洛谷原题
- luogu P3992洛谷原题
- luogu P4168洛谷原题
- luogu P4119洛谷原题
- luogu P2325洛谷原题
- luogu P5906洛谷原题
- luogu P4887洛谷原题
- luogu P2709洛谷原题
- luogu P3674洛谷原题
- luogu P3709洛谷原题
- luogu P4074洛谷原题
- luogu P5501洛谷原题
- luogu B4016洛谷原题
- luogu P3629洛谷原题
- luogu P3938洛谷原题
- luogu P4178洛谷原题
- luogu P6329洛谷原题
- luogu P2056洛谷原题
- luogu P3345洛谷原题
- luogu P4183洛谷原题
- luogu P5306洛谷原题
- luogu P3806洛谷原题
- luogu P2634洛谷原题
- luogu P2664洛谷原题
- luogu P3714洛谷原题
- luogu P4149洛谷原题
- luogu P3241洛谷原题
- luogu P4075洛谷原题
- luogu P4292洛谷原题
- luogu P1505洛谷原题
- luogu P2486洛谷原题
- luogu P4069洛谷原题
- luogu P4211洛谷原题
- luogu P5305洛谷原题
- luogu P5354洛谷原题
- luogu P5499洛谷原题
- luogu P4008洛谷原题
- luogu P5055洛谷原题
- luogu P3835洛谷原题
- luogu P5854洛谷原题
- luogu P1377洛谷原题
- luogu P5044洛谷原题
- luogu P3793洛谷原题
- luogu P4567洛谷原题
- luogu P3850洛谷原题
- luogu P5338洛谷原题
- luogu P2042洛谷原题
- luogu P1110洛谷原题
- luogu P3644洛谷原题
- luogu P1486洛谷原题
- luogu P2710洛谷原题· P2710 数列
- luogu P3224洛谷原题
- luogu P5321洛谷原题
- luogu P4148洛谷原题
- luogu P4169洛谷原题
- luogu P4357洛谷原题
- luogu P7883洛谷原题
- luogu P2479洛谷原题
- luogu P3769洛谷原题
- luogu P4390洛谷原题
- luogu P4475洛谷原题
- luogu P2093洛谷原题
- luogu P5471洛谷原题
- luogu P3690洛谷原题
- luogu P3203洛谷原题
- luogu P4338洛谷原题
- luogu P1501洛谷原题
- luogu P3348洛谷原题
- luogu P3703洛谷原题
- luogu P4172洛谷原题
- luogu P4219洛谷原题
- luogu P5489洛谷原题
- luogu P2387洛谷原题
动态规划 - 罗勇军《算法竞赛》
洛谷子题单 · 86 题
第一层:三种基本形态
flowchart TD nlinear["线性 DP<br/>P1216 起"] ninterval["区间 DP<br/>P1775 起"] ntree["树形 DP<br/>P1352 起"] nlinear --> ninterval nlinear --> ntree
线性、区间、树形是 DP 的三种基本形态,先把它们练熟再谈优化。
线性 DP(P1216 起)另有 P1048、P2758、P1020、P1091、P1095、P1541、P1868、P2679、P2501、P3336、P3558、P4158、P5301;区间 DP(P1775 起)另有 P1880、CF1198D、P3146、P1063、P1005、P4170、P4302、P2466;树形 DP(P1352 起)另有 P2015、P4322、P1040、P1122、P1273、P2014、P2585、P3047、P3698、P5658、P2607、P3177、P4395、P4516。
第二层:状态设计
flowchart TD nsubset["状压 DP<br/>P1896 起"] ndigit["数位 DP<br/>P2602 起"] nsubset --> ndigit
状压与数位是「状态怎么表示」的两类套路,难度比第一层高一档。
状压 DP(P1896 起)另有 P1433、P10975、P2831、P2704、P1879、P3092、P3694、P4925、P2157、P2167、P2396、P4363、P5005、P2150;数位 DP(P2602 起)另有 P2657、P4124、P4798、P3281、P2518、P3286、P4999。
第三层:优化手段
flowchart TD nmono["单调队列与斜率优化<br/>P1725 起"] ndecmono["决策单调性<br/>UVA10304 起"] nmono --> ndecmono
先是单调队列与斜率优化,再是决策单调性;这两块都要求先把第一层的朴素转移写出来。
单调队列与斜率优化(P1725 起)另有 P3287、P2605、P2627、P3957、P1776、P3089、P3572、P3522、P4544、P5665、P1973、P2569、P4852、P2900、P3628、P3648、P4360、P5468、P2305、P3195;决策单调性(UVA10304 起)另有 P1912、P4767、P4072。
- luogu CF1198D洛谷原题
- luogu P1005洛谷原题
- luogu P4302洛谷原题
- luogu P2466洛谷原题
- luogu P2758洛谷原题
- luogu P1091洛谷原题
- luogu P1095洛谷原题
- luogu P1541洛谷原题
- luogu P1868洛谷原题
- luogu P2501洛谷原题
- luogu P3336洛谷原题
- luogu P3558洛谷原题
- luogu P4158洛谷原题
- luogu P5301洛谷原题
- luogu P2602洛谷原题
- luogu P4124洛谷原题
- luogu P4798洛谷原题
- luogu P3281洛谷原题
- luogu P2518洛谷原题
- luogu P3286洛谷原题
- luogu P4999洛谷原题
- luogu P10975洛谷原题
- luogu P3092洛谷原题
- luogu P3694洛谷原题
- luogu P4925洛谷原题
- luogu P2157洛谷原题
- luogu P2167洛谷原题
- luogu P2396洛谷原题
- luogu P4363洛谷原题
- luogu P5005洛谷原题
- luogu P2150洛谷原题
- luogu P3698洛谷原题
- luogu P2607洛谷原题
- luogu P4395洛谷原题
- luogu P3287洛谷原题
- luogu P2605洛谷原题
- luogu P3957洛谷原题
- luogu P3089洛谷原题
- luogu P4544洛谷原题
- luogu P1973洛谷原题
- luogu P4852洛谷原题
- luogu P3628洛谷原题
- luogu P3648洛谷原题
- luogu P4360洛谷原题
- luogu P5468洛谷原题
- luogu P2305洛谷原题
- luogu UVA10304洛谷原题
- luogu P1912洛谷原题
- luogu P4072洛谷原题
数论和线性代数 - 罗勇军《算法竞赛》
洛谷子题单 · 113 题
第一层:四件基础工具
flowchart TD ngcd["gcd 与同余基础<br/>P1029 起"] nmatrix["矩阵与快速幂<br/>P3390 起"] ngauss["高斯消元<br/>P3389 起"] nbasis["线性基<br/>P3812 起"] ngcd --> nmatrix nmatrix --> ngauss ngauss --> nbasis
gcd 与同余是全部数论的前提,矩阵、高斯消元、线性基是三条并列的代数工具。
gcd 与同余基础(P1029 起)另有 P2152、P1890、P5435、P5436、P1414、P1072、P4549、P1516、P1082、P2613、P3811、P5431、P3951;矩阵与快速幂(P3390 起)另有 P1226、P2886、P1349、P1939、P1306、P2044、P5175、P4783、P1962、P4000、P3758、P4967、P5343、P5337、P5303;高斯消元(P3389 起)另有 P2447、P4035、P5516、P4111、P4457;线性基(P3812 起)另有 P3857、P4570、P3292、P4151。
第二层:进阶数论
flowchart TD ncrt["CRT 与欧拉定理<br/>P4777 起"] nmobius["莫比乌斯反演与筛<br/>P2261 起"] nfrac["01 分数规划<br/>P4377 起"] ncrt --> nmobius
CRT 与欧拉定理建在第一层的同余之上,莫比乌斯反演再往上走一层;01 分数规划只要求会二分与最短路,和它们平行。
CRT 与欧拉定理(P4777 起)另有 P3868、P2480、P4774、P5345、P4718、P1075、P2441、P5535、P2158、P2568、P2398、P4139;莫比乌斯反演与筛(P2261 起)另有 P5221、P3935、P3172、P2522、P3455、P3327、P1829、P4619、P3704、P5518、P4213;01 分数规划(P4377 起)另有 P3199、P3288、P3705、P4322。
第三层:多项式与概率
flowchart TD npoly["多项式<br/>P3803 起"] nprob["概率与期望<br/>P2473 起"] npoly --> nprob
多项式是本节最重的一块,建议放到最后;概率与期望可以独立推进,只要求会写期望 DP。
多项式(P3803 起)另有 P1919、P4238、P4245、P4512、P4717、P4721、P4725、P4726、P4781、P5050、P5158、P5205、P5245、P5273、P5282、P5373、P5383、P5393、P5394、P3338、P3723、P5437、P5293、P5432、P5472、P5577;概率与期望(P2473 起)另有 P4525、P5104、P1850、P3830、P4564、P2221、P3239、P3750、P4284、P5249、P2081、P3343、P3600、P5326。
- luogu P2886洛谷原题
- luogu P1349洛谷原题
- luogu P1939洛谷原题
- luogu P1306洛谷原题
- luogu P2044洛谷原题
- luogu P5175洛谷原题· P5175 数列
- luogu P4783洛谷原题
- luogu P1962洛谷原题
- luogu P4000洛谷原题
- luogu P3758洛谷原题
- luogu P4967洛谷原题
- luogu P5343洛谷原题
- luogu P5337洛谷原题
- luogu P5303洛谷原题
- luogu P3389洛谷原题
- luogu P2447洛谷原题
- luogu P4035洛谷原题
- luogu P5516洛谷原题
- luogu P4111洛谷原题
- luogu P4457洛谷原题
- luogu P3812洛谷原题
- luogu P3857洛谷原题
- luogu P4570洛谷原题
- luogu P3292洛谷原题
- luogu P4151洛谷原题
- luogu P3288洛谷原题
- luogu P3705洛谷原题
- luogu P2152洛谷原题
- luogu P1890洛谷原题
- luogu P5435洛谷原题
- luogu P5436洛谷原题
- luogu P4549洛谷原题
- luogu P2613洛谷原题
- luogu P3811洛谷原题
- luogu P5431洛谷原题
- luogu P3951洛谷原题
- luogu P4777洛谷原题
- luogu P3868洛谷原题
- luogu P2480洛谷原题
- luogu P4774洛谷原题
- luogu P5345洛谷原题
- luogu P4718洛谷原题
- luogu P5535洛谷原题
- luogu P2158洛谷原题
- luogu P2568洛谷原题
- luogu P2398洛谷原题
- luogu P4139洛谷原题
- luogu P5221洛谷原题
- luogu P2261洛谷原题
- luogu P3935洛谷原题
- luogu P3172洛谷原题
- luogu P2522洛谷原题
- luogu P3455洛谷原题
- luogu P3327洛谷原题
- luogu P1829洛谷原题
- luogu P4619洛谷原题
- luogu P3704洛谷原题
- luogu P5518洛谷原题
- luogu P4213洛谷原题
- luogu P3803洛谷原题
- luogu P1919洛谷原题
- 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 P5383洛谷原题
- luogu P5393洛谷原题
- luogu P5394洛谷原题
- luogu P3338洛谷原题
- luogu P3723洛谷原题
- luogu P5437洛谷原题
- luogu P5293洛谷原题
- luogu P5432洛谷原题
- luogu P5472洛谷原题
- luogu P5577洛谷原题
- luogu P4525洛谷原题
- luogu P5104洛谷原题
- luogu P1850洛谷原题
- luogu P3830洛谷原题
- luogu P4564洛谷原题
- luogu P2473洛谷原题
- luogu P2221洛谷原题
- luogu P3239洛谷原题
- luogu P3750洛谷原题
- luogu P4284洛谷原题
- luogu P5249洛谷原题
- luogu P2081洛谷原题
- luogu P3343洛谷原题
- luogu P3600洛谷原题
- luogu P5326洛谷原题
组合数学 - 罗勇军《算法竞赛》
洛谷子题单 · 59 题
组合数与 Lucas
flowchart TD nP2822["P2822 组合数问题"] nP1313["P1313 计算系数"] nP3807["P3807 卢卡斯定理"] nP4345["P4345 超能粒子炮·改"] nP1680["P1680 奇怪的分组"] nP4931["P4931 情侣?给我烧了!(加强版…"] nP2822 --> nP1313 nP2822 --> nP3807 nP3807 --> nP4345 nP3807 --> nP1680 nP2822 --> nP4931
P2822 递推组合数是入口,P1313 用二项式定理,P3807 Lucas 定理之后 P4345 与 P1680 是它的变体。
容斥
flowchart TD nP3197["P3197 越狱"] nP1450["P1450 硬币购物"] nP3349["P3349 小星星"] nP4336["P4336 黑暗前的幻想乡"] nP3270["P3270 成绩比较"] nP4491["P4491 染色"] nP3197 --> nP1450 nP3197 --> nP3349 nP3197 --> nP4336 nP3197 --> nP3270 nP3197 --> nP4491
P3197 越狱是容斥入门,P1450 硬币购物是背包型容斥,P3349 小星星是树上容斥,P4336 黑暗前的幻想乡是矩阵树加容斥。
Catalan 与格路计数
flowchart TD nP1044["P1044 栈"] nP2532["P2532 树屋阶梯"] nP3200["P3200 有趣的数列"] nP1641["P1641 生成字符串"] nP1722["P1722 矩阵 II"] nP1976["P1976 鸡蛋饼"] nP1044 --> nP2532 nP2532 --> nP3200 nP1044 --> nP1641 nP1641 --> nP1722 nP1641 --> nP1976
P1044 栈是 Catalan 的最直观模型,P2532 树屋阶梯与 P3200 有趣的数列是同一个数的两种包装;P1641 生成字符串走格路计数,P1722 与 P1976 都在它之上。
斯特林数
flowchart TD nP5395["P5395 第二类斯特林数·行"] nP5396["P5396 第二类斯特林数·列"] nP5408["P5408 第一类斯特林数·行"] nP5409["P5409 第一类斯特林数·列"] nP1655["P1655 小朋友的球"] nP5395 --> nP5396 nP5408 --> nP5409 nP5395 --> nP1655
P5395 第二类斯特林数·行与 P5396·列是一对,P5408 / P5409 是第一类的一对;P1655 小朋友的球是第二类斯特林数的应用题。
Polya 与置换群
flowchart TD nP4980["P4980 Pólya 定理"] nP2561["P2561 黑白瓷砖"] nP4128["P4128 有色图"] nP4727["P4727 图的同构计数"] nP1446["P1446 Cards"] nP4980 --> nP2561 nP4980 --> nP4128 nP4980 --> nP4727 nP2561 --> nP1446
P4980 Polya 定理是模板,P2561 黑白瓷砖与 P4128 有色图、P4727 图的同构计数都是它的应用,P1446 Cards 是 Burnside 的另一道题。
树的计数
flowchart TD nP2290["P2290 树的计数"] nP6598["P6598 烷烃计数"] nP5818["P5818 同分异构体计数"] nP6597["P6597 烯烃计数"] nP2290 --> nP6598 nP6598 --> nP6597 nP6598 --> nP5818
P2290 树的计数用 prufer 序列,P6598 烷烃计数是它的生成函数版,P6597 烯烃与 P5818 同分异构体在它之上。
博弈论
flowchart TD nP4018["P4018 Roy&October之…"] nP2252["P2252 威佐夫博弈"] nP2953["P2953 Cow Digit Game S"] nP2575["P2575 高手过招"] nP2599["P2599 取石子游戏"] nP1290["P1290 欧几里德的游戏"] nP5675["P5675 取石子游戏"] nP4018 --> nP2953 nP4018 --> nP2575 nP2252 --> nP2599 nP2252 --> nP1290 nP2599 --> nP5675
P4018 是 SG 函数入门,P2953 与 P2575 都是 SG 的直接套用;P2252 威佐夫博弈与 P2599 取石子是另一支,P1290 欧几里德的游戏与 P5675 都在它之上。
P5520(插板法)、P5596、P3726(抛硬币)、P2480(古代猪文)、P2675、P5664(计数 DP)、P4769(冒泡排序)、P3978(概率论)、P4448、P5400、P5339(容斥加 DP)、P4827(斯特林加树形 DP)、P4708(Burnside)、P4451、P4463、P4705(生成函数)、P2000、P5652、P3210、P1288 与上面七张图没有前置关系。
- luogu P5520洛谷原题
- luogu P2290洛谷原题
- luogu P5596洛谷原题
- luogu P1313洛谷原题
- luogu P3807洛谷原题
- luogu P1680洛谷原题
- luogu P3726洛谷原题
- luogu P2480洛谷原题
- luogu P4345洛谷原题
- luogu P2675洛谷原题
- luogu P3349洛谷原题
- luogu P3270洛谷原题
- luogu P4336洛谷原题
- luogu P4448洛谷原题
- luogu P4491洛谷原题
- luogu P5339洛谷原题
- luogu P5400洛谷原题
- luogu P2532洛谷原题
- luogu P1641洛谷原题
- luogu P4769洛谷原题
- luogu P3978洛谷原题
- luogu P1655洛谷原题
- luogu P5395洛谷原题
- luogu P5396洛谷原题
- luogu P5408洛谷原题
- luogu P5409洛谷原题
- luogu P4827洛谷原题
- luogu P1446洛谷原题
- luogu P2561洛谷原题
- luogu P4128洛谷原题
- luogu P4727洛谷原题
- luogu P6598洛谷原题
- luogu P5818洛谷原题
- luogu P6597洛谷原题
- luogu P4708洛谷原题· P4708 画画
- luogu P4980洛谷原题
- luogu P4451洛谷原题
- luogu P4463洛谷原题
- luogu P4705洛谷原题
- luogu P2000洛谷原题
- luogu P4018洛谷原题
- luogu P2252洛谷原题
- luogu P2599洛谷原题
- luogu P3210洛谷原题
- luogu P2953洛谷原题
- luogu P5675洛谷原题
- luogu P2575洛谷原题
- luogu P1288洛谷原题
- luogu P5652洛谷原题
- luogu P1290洛谷原题
计算几何 - 罗勇军《算法竞赛》
洛谷子题单 · 16 题
凸包
flowchart TD nP1355["P1355 神秘大三角"] nP2742["P2742 二维凸包"] nP1452["P1452 Beauty Contest G"] nP3829["P3829 信用卡凸包"] nP3187["P3187 最小矩形覆盖"] nP1355 --> nP2742 nP2742 --> nP1452 nP2742 --> nP3829 nP1452 --> nP3187
P1355 练基本向量运算,P2742 二维凸包是模板,P1452 旋转卡壳求直径、P3829 信用卡凸包是凸包的曲线版,P3187 最小矩形覆盖是旋转卡壳的进一步应用。
最近点对与最小圆覆盖
flowchart TD nP1257["P1257 平面上的最接近点对"] nP1742["P1742 最小圆覆盖"] nP2287["P2287 最佳包裹"] nP1257 --> nP1742 nP1257 --> nP2287
P1257 平面最近点对是分治模板,P1742 最小圆覆盖是随机增量,P2287 最佳包裹是三维版。
半平面交
flowchart TD nP4196["P4196 半平面交"] nP4557["P4557 战争"] nP4250["P4250 小凸想跑步"] nP3297["P3297 逃考"] nP4196 --> nP4557 nP4196 --> nP4250 nP4557 --> nP3297
P4196 半平面交是模板,P4557 战争是半平面交判可行域,P4250 小凸想跑步是它的概率版,P3297 逃考再用一次。
P5403(田野)、P3256(赛车)、P2600(瞭望塔)、P5328(浙江省选)与上面三张图没有前置关系。
- luogu P1355洛谷原题
- luogu P2742洛谷原题
- luogu P1452洛谷原题
- luogu P1742洛谷原题
- luogu P2287洛谷原题
- luogu P3829洛谷原题
- luogu P4557洛谷原题
- luogu P5403洛谷原题
- luogu P3187洛谷原题
- luogu P3256洛谷原题
- luogu P2600洛谷原题
- luogu P4196洛谷原题
- luogu P3297洛谷原题
- luogu P4250洛谷原题
- luogu P5328洛谷原题
字符串 - 罗勇军《算法竞赛》
洛谷子题单 · 56 题
哈希
flowchart TD nP3370["P3370 字符串哈希"] nP3501["P3501 ANT-Antisymmetry"] nP4391["P4391 Radio"] nP5270["P5270 无论怎样神树大人都会删库…"] nP5537["P5537 系统设计"] nP3370 --> nP3501 nP3370 --> nP4391 nP4391 --> nP5270 nP4391 --> nP5537
P3370 字符串哈希是模板,P3501 判反对称、P4391 求最小循环节,P5270 与 P5537 都在它之上。
Manacher
flowchart TD nP3805["P3805 Manacher"] nP1659["P1659 拉拉队排练"] nP4555["P4555 最长双回文串"] nP3805 --> nP1659 nP3805 --> nP4555
P3805 Manacher 是模板,P1659 拉拉队排练按回文长度统计,P4555 求最长双回文串。
Trie 基础
flowchart TD nP2580["P2580 于是他错误的点名开始了"] nP3879["P3879 阅读理解"] nP2922["P2922 Secret Message G"] nP2292["P2292 L 语言"] nP2580 --> nP3879 nP2580 --> nP2922 nP2580 --> nP2292
P2580 点名单是 Trie 模板,P3879 阅读理解建倒排表,P2922 与 P2292 都在 Trie 上数前缀。
Trie 进阶
flowchart TD nP2580["P2580 于是他错误的点名开始了"] nP3065["P3065 First! G"] nP3294["P3294 背单词"] nP4407["P4407 电子字典"] nP2580 --> nP3065 nP3065 --> nP3294 nP2580 --> nP4407
P3065 First! 判前缀冲突,P3294 背单词在它之上定输出顺序,P4407 判一位编辑距离。
01-Trie 与输出控制
flowchart TD nP2580["P2580 于是他错误的点名开始了"] nP4551["P4551 最长异或路径"] nP4683["P4683 Type Printer"] nP2580 --> nP4551 nP2580 --> nP4683
P4551 把字符换成二进制位(01-Trie),P4683 Type Printer 用 Trie 控制打印顺序。
KMP 与 Z 函数
flowchart TD nP3375["P3375 KMP"] nP3435["P3435 OKR-Periods of Wor…"] nP2375["P2375 动物园"] nP3426["P3426 SZA-Template"] nP3193["P3193 GT考试"] nP5410["P5410 扩展 KMP"] nP3375 --> nP3435 nP3435 --> nP2375 nP3435 --> nP3426 nP3375 --> nP3193 nP3375 --> nP5410
P3375 KMP 是模板,P3435 与 P3426 都用失配树,P2375 在失配树上叠倍增;P3193 GT 考试是 KMP 加矩阵,P5410 扩展 KMP 是另一套 Z 数组。
AC 自动机模板
flowchart TD nP3808["P3808 AC 自动机(简单版)"] nP3796["P3796 AC 自动机(简单版 I…"] nP5357["P5357 AC 自动机"] nP3808 --> nP3796 nP3808 --> nP5357
P3808 是 AC 自动机模板,P3796 多模式串统计、P5357 二次加强版。
fail 树与 fail 上的 DP
flowchart TD nP5357["P5357 AC 自动机"] nP2414["P2414 阿狸的打字机"] nP3966["P3966 单词"] nP3311["P3311 数数"] nP4052["P4052 文本生成器"] nP5357 --> nP2414 nP5357 --> nP3966 nP5357 --> nP3311 nP3311 --> nP4052
P2414 阿狸的打字机与 P3966 单词要建 fail 树统计;P3311 数数在 fail 树上做数位 DP,P4052 文本生成器是同一形态。
AC 自动机加判环
flowchart TD nP3808["P3808 AC 自动机(简单版)"] nP3121["P3121 Censoring G"] nP2444["P2444 病毒"] nP3808 --> nP3121 nP3121 --> nP2444
P3121 Censoring 在 AC 自动机上做栈式删除,P2444 病毒判 fail 图上的环。
后缀排序
flowchart TD nP3809["P3809 后缀排序"] nP5353["P5353 树上后缀排序"] nP2336["P2336 喵星球上的点名"] nP2463["P2463 Sandy 的卡片"] nP3809 --> nP5353 nP3809 --> nP2336 nP3809 --> nP2463
P3809 后缀排序是模板,P5353 把它搬到树上,P2336 与 P2463 都在 height 数组上数出现次数。
height 数组的应用
flowchart TD nP3809["P3809 后缀排序"] nP2852["P2852 Milk Patterns G"] nP4051["P4051 字符加密"] nP1117["P1117 优秀的拆分"] nP2178["P2178 品酒大会"] nP3809 --> nP2852 nP3809 --> nP4051 nP3809 --> nP1117 nP1117 --> nP2178
P2852 找最长重复子串、P4051 处理循环串、P1117 优秀的拆分配合哈希,P2178 品酒大会是后缀数组加并查集。
回文自动机
flowchart TD nP5496["P5496 回文树"] nP3649["P3649 回文串"] nP4287["P4287 双倍回文"] nP4762["P4762 Virus synthesis"] nP4824["P4824 Censoring S"] nP5496 --> nP3649 nP5496 --> nP4287 nP4287 --> nP4762 nP5496 --> nP4824
P5496 回文树是模板,P3649 数回文串出现次数、P4287 双倍回文、P4762 Virus synthesis 与 P4824 Censoring 都建在它之上。
后缀自动机
flowchart TD nP3804["P3804 后缀自动机(SAM)"] nP3975["P3975 弦论"] nP4248["P4248 差异"] nP5341["P5341 甲苯先生和大中锋的字符串"] nP4770["P4770 你的名字"] nP5284["P5284 字符串问题"] nP5319["P5319 奥术神杖"] nP3804 --> nP3975 nP3804 --> nP4248 nP3804 --> nP5341 nP3804 --> nP4770 nP4770 --> nP5284 nP4770 --> nP5319
P3804 后缀自动机是模板,P3975 弦论求第 k 小子串、P4248 差异求两两 LCP 和、P5341 数出现次数、P4770 你的名字、P5284 与 P5319 都是 SAM 的进阶应用。
P5537(系统设计)、P3783(天才黑客)、P5599(文本编辑器)、P5346(柯南家族)、P5576(口头禅)与上面八张图没有前置关系。
- luogu P3501洛谷原题
- luogu P5270洛谷原题
- luogu P5537洛谷原题
- luogu P3805洛谷原题
- luogu P1659洛谷原题
- luogu P4555洛谷原题
- luogu P2292洛谷原题
- luogu P3065洛谷原题
- luogu P3294洛谷原题
- luogu P4407洛谷原题
- luogu P4683洛谷原题
- luogu P3783洛谷原题
- luogu P5496洛谷原题
- luogu P3649洛谷原题
- luogu P4287洛谷原题
- luogu P4762洛谷原题
- luogu P4824洛谷原题
- luogu P5410洛谷原题
- luogu P3426洛谷原题
- luogu P3193洛谷原题
- luogu P3796洛谷原题
- luogu P5357洛谷原题
- luogu P2414洛谷原题
- luogu P3966洛谷原题
- luogu P3311洛谷原题
- luogu P4052洛谷原题
- luogu P5599洛谷原题
- luogu P2444洛谷原题
- luogu P3809洛谷原题
- luogu P5353洛谷原题
- luogu P2336洛谷原题
- luogu P2463洛谷原题
- luogu P4051洛谷原题
- luogu P1117洛谷原题
- luogu P2178洛谷原题
- luogu P5346洛谷原题
- luogu P5576洛谷原题
- luogu P3804洛谷原题
- luogu P3975洛谷原题
- luogu P4248洛谷原题
- luogu P5341洛谷原题
- luogu P4770洛谷原题
- luogu P5284洛谷原题
- luogu P5319洛谷原题
图论 - 罗勇军《算法竞赛》
洛谷子题单 · 112 题
第一层:建图与遍历
flowchart TD ntopo["拓扑排序<br/>P1113 起"] neuler["欧拉路径<br/>P2731 起"] ntarjan["Tarjan 与连通性<br/>P2863 起"] nsat["2-SAT<br/>P4782 起"] ntopo --> neuler ntopo --> ntarjan ntarjan --> nsat
拓扑、欧拉路、Tarjan 是三种「怎么走一张图」的基本功,2-SAT 建在 Tarjan 缩点之上。
拓扑排序(P1113 起)另有 P1347、P1685、P3243、P1983、P1038、P4934、P4017、P2597;欧拉路径(P2731 起)另有 UVA10054、P1341、P1333、P1127、P6066、P6628;Tarjan 与连通性(P2863 起)另有 P3387、P3388、P2341、P2746、P1407、P2272、P3225、P5058、P2515、P2607、P5049、P4381、P1399、P1453;2-SAT(P4782 起)另有 P4171、P3825、P5332。
第二层:最短路与生成树
flowchart TD nsp["最短路<br/>P3371 起"] nmst["最小生成树<br/>P3366 起"] nsp --> nmst
最短路与 MST 是图论的两条老主线,货车运输这类题会把它们接起来。
最短路(P3371 起)另有 B3647、P1119、P1613、P2865、P2868、P5960、P1730、P2419、P3385、P1993、P4779、P5905、P1144、P1462、P1522、P1266、P4568、P3238、P5304、P3275、P2294、P4926、P5590;最小生成树(P3366 起)另有 P2121、P4180、P4951、P2872、P1991、P1967、P4047。
第三层:网络流
flowchart TD nflow["网络流<br/>P3376 起"] nmatch["二分图匹配与最小割<br/>P3386 起"] ncost["最小费用最大流<br/>P3381 起"] nflow --> nmatch nmatch --> ncost
先在最大流上练手,再看二分图匹配与最小割怎么互相翻译,最后是最小费用流。
网络流(P3376 起)另有 P2472、P2754、P2765、P2766、P2805、P4722;二分图匹配与最小割(P3386 起)另有 P2071、P2756、P1129、P1559、P2423、P2764、P2825、P3033、P3731、P4014、P4617、P2065、P2763、P1344、P1345、P2057、P2598、P2774、P4126、P5039、P3749、P4897、P4001;最小费用最大流(P3381 起)另有 P4452、P2045、P2050、P2053、P2604、P2770、P3159、P3356、P3358、P4013、P4015、P5331、P3705。
- · P1685 游览
- luogu P4934洛谷原题· P4934 礼物
- luogu P2597洛谷原题
- luogu UVA10054洛谷原题
- luogu P1333洛谷原题
- luogu P2731洛谷原题
- · P1127 词链
- luogu P6066洛谷原题
- luogu P2607洛谷原题
- luogu P4381洛谷原题
- luogu P1399洛谷原题
- luogu P4782洛谷原题
- luogu P4171洛谷原题
- luogu P5332洛谷原题
- luogu B3647洛谷原题
- · P1613 跑路
- luogu P2868洛谷原题
- luogu P1730洛谷原题
- luogu P5905洛谷原题
- luogu P1266洛谷原题
- luogu P3238洛谷原题
- luogu P5304洛谷原题
- luogu P2294洛谷原题
- luogu P4926洛谷原题
- luogu P5590洛谷原题
- luogu P2121洛谷原题
- luogu P3376洛谷原题
- luogu P2472洛谷原题
- luogu P2754洛谷原题
- luogu P2805洛谷原题
- luogu P4722洛谷原题
- luogu P2756洛谷原题
- luogu P3731洛谷原题
- luogu P2598洛谷原题
- luogu P4126洛谷原题
- luogu P5039洛谷原题
- luogu P4897洛谷原题
- luogu P3381洛谷原题
- luogu P4452洛谷原题
- luogu P2050洛谷原题
- luogu P2604洛谷原题
- luogu P2770洛谷原题
- luogu P3159洛谷原题
- luogu P3356洛谷原题
- luogu P5331洛谷原题
- luogu P3705洛谷原题