洛谷官方入门与基础算法题单

按洛谷官方入门与基础算法训练题单整理的完整练习路径。

0 / 0 已完成

洛谷官方入门与基础算法题单

洛谷官方题单列表

本题单共收录 18 个官方子题单、271 个题目条目、262 道不同题目。

其中有 7 道题出现在多个学习阶段,形成 9 个重复条目。这些条目按洛谷官方分组原样保留,并共享完成进度。

怎么看小节里的图

每个小节开头有几张 flowchart TD 有向图,画的是本节题目之间的做题先后关系。

  • 节点写「题号 + 简短标题」,就是本节题单里列的那几道题。
  • 箭头 A → B 表示硬前置:B 会用到 A 建立起来的套路,先把 A 做完再碰 B,能省掉大量原地打转。
  • 题目多的小节按支线拆成几张图,每张图只画一条线。两张图之间还有依赖时,用图下面那句话说明,不跨图画箭头。
  • 图里只画有前置关系的题。 没有出现在任何图里的题,在每节末尾单独列出,它们不依赖本节任何题,可以随时插进来做。
  • 图只画节内关系。跨小节的依赖(比如二分答案要先会写函数)写在小节正文里。
  • 同一道题出现在多个小节时,每节的图都把它完整画一次,因为它在不同小节的入边并不相同。

【入门1】顺序结构

洛谷官方子题单 · 15 题

先练输出

flowchart TD
  nB2002["B2002 Hello,World!"]
  nP1000["P1000 超级玛丽游戏"]
  nB2025["B2025 输出字符菱形"]
  nB2005["B2005 字符三角形"]

  nB2002 --> nP1000
  nB2002 --> nB2025
  nB2025 --> nB2005

B2002 是最短的一题,照着它把输出格式写对;P1000 是多行输出,B2025 → B2005 是同一套字符图案从菱形缩到三角形。

读入、算术与时间

flowchart TD
  nP1001["P1001 A+B Problem"]
  nP5703["P5703 苹果采购"]
  nP5706["P5706 再分肥宅水"]
  nP3954["P3954 成绩"]
  nP1421["P1421 小玉买文具"]
  nP1425["P1425 小鱼的游泳时间"]
  nP5708["P5708 三角形面积"]
  nB2029["B2029 大象喝水"]
  nP5707["P5707 上学迟到"]

  nP1001 --> nP5703
  nP1001 --> nP5706
  nP1001 --> nP3954
  nP1001 --> nP1421
  nP1001 --> nP1425
  nP5706 --> nP5708
  nP5706 --> nB2029
  nP1425 --> nP5707

P1001 练会读入两个整数之后,其余都是「读入、算一下、输出」;P5706 是浮点除法与保留小数,它的后继 P5708 要开平方、B2029 要算体积;时间一支从 P1425 的时长差进到 P5707 的跨天与向上取整。

P5704(字母转换)和 P5705(数字反转)只跟字符处理有关,与上面两条线没有前置关系。

【入门2】分支结构

洛谷官方子题单 · 18 题

单分支与多分支

flowchart TD
  nP5710["P5710 数的性质"]
  nP5712["P5712 Apples"]
  nP5713["P5713 洛谷团队系统"]
  nP1909["P1909 买铅笔"]
  nP1422["P1422 小玉家的电费"]
  nP5714["P5714 肥胖问题"]

  nP5713 --> nP1909

这一张都是「判断完直接输出」:P5710 练逻辑运算、P5712 与 P1422 是分段输出、P5714 要处理浮点比较;P5713 与 P1909 是同一套「几选一取最小」。

比较、排序与取整

flowchart TD
  nP5715["P5715 三位数排序"]
  nP5717["P5717 三角形分类"]
  nP4414["P4414 ABC"]
  nP5711["P5711 闰年判断"]
  nP5716["P5716 月份天数"]
  nP5709["P5709 苹果和虫子"]

  nP5715 --> nP5717
  nP5715 --> nP4414
  nP5711 --> nP5716

P5715 先把三个数排好序,P5717 在排序之上判三角形类型、P4414 在排序之上按字母顺序输出;P5711 闰年判断是 P5716 月份天数的前置,P5709 是向上取整。

P2433(N 合一杂烩)、P1085(循环找最值)、P1424(周期取模)、P1055(取模校验)、P1888(gcd 加浮点)、P1046(数组计数)与上面两张图都没有前置关系,可以随时穿插。

【入门3】循环结构

洛谷官方子题单 · 21 题

单层循环:累加、最值、计数

flowchart TD
  nP5718["P5718 找最小值"]
  nP5724["P5724 求极差"]
  nP5726["P5726 打分"]
  nP5719["P5719 分类平均"]
  nP5722["P5722 数列求和"]

  nP5718 --> nP5724
  nP5718 --> nP5726
  nP5718 --> nP5719
  nP5718 --> nP5722

P5718 用一次循环求最小值,之后 P5724(极差)、P5726(去掉最值再平均)、P5719(分类累加)、P5722(求和)都是同一个循环骨架换个统计量。

while 与取位

flowchart TD
  nP5720["P5720 一尺之棰"]
  nP1035["P1035 级数求和"]
  nP1423["P1423 小玉在游泳"]
  nP1307["P1307 数字反转"]

  nP5720 --> nP1035
  nP5720 --> nP1423
  nP5720 --> nP1307

P5720 是 while 循环入门,P1035 与 P1423 是浮点累加到阈值才停,P1307 是反复取末位再拼回去。

双层循环与素数

flowchart TD
  nP5721["P5721 数字直角三角形"]
  nP5725["P5725 求三角形"]
  nP1075["P1075 质因数分解"]
  nP5723["P5723 质数口袋"]
  nP1217["P1217 回文质数"]

  nP5721 --> nP5725
  nP1075 --> nP5723
  nP5723 --> nP1217

P5721 → P5725 是同一个字符三角形换方向;素数一支从 P1075 的试除起,P5723 加上累加与终止条件,P1217 再叠一步回文判定。

P1009(高精度阶乘和)、P1980(数位统计)、P2669(找规律)、P1720(斐波那契递推)、P1420(最长连号)、P4956(枚举整除)、P1089(模拟)各自独立,按难度自选顺序即可。

【入门4】数组

洛谷官方子题单 · 20 题

一维数组:统计与计数

flowchart TD
  nP1428["P1428 小鱼比可爱"]
  nP2550["P2550 彩票摇奖"]
  nP1554["P1554 梦中的统计"]
  nP2141["P2141 珠心算测验"]

  nP1428 --> nP2141

四题都在「把数按下标存下来再统计」:P1428 数前面比它小的数、P2550 做中奖计数、P1554 做数位计数;P2141 珠心算测验在它们之上判「两数之和在不在数组里」。

标记与覆盖

flowchart TD
  nP1047["P1047 校门外的树"]
  nP1789["P1789 插火把"]
  nP5729["P5729 工艺品制作"]

  nP1047 --> nP1789
  nP1789 --> nP5729

P1047 用一维标记数组把区间盖掉,P1789 升到二维带范围,P5729 再升到三维——三级台阶依次加维度。

模拟填表

flowchart TD
  nP2615["P2615 神奇的幻方"]
  nP5731["P5731 蛇形方阵"]
  nP1205["P1205 方块转换"]
  nP5732["P5732 杨辉三角"]

  nP2615 --> nP5731
  nP5731 --> nP1205
  nP2615 --> nP5732

P2615 幻方是「按规则往二维数组里填数」的入门,P5731 蛇形方阵换个方向、P1205 方块转换变成矩阵旋转,P5732 杨辉三角是二维递推。

压缩技术两连

flowchart TD
  nP1319["P1319 压缩技术"]
  nP1320["P1320 压缩技术(续)"]

  nP1319 --> nP1320

P1319 与 P1320 是同一题的续集,做完前者立刻做后者最省力。

P1427(逆序输出)、P5727(冰雹猜想存中间态)、P5728(双循环比较)、P5730(字符映射输出)、P1614(滑动窗口和)、P2911(计数取最大)、P1161(异或标记)与上面四张图都没有前置关系。

【入门5】字符串

洛谷官方子题单 · 15 题

字符处理

flowchart TD
  nP5733["P5733 自动修正"]
  nP1914["P1914 小书童——凯撒密码"]
  nP1308["P1308 统计单词数"]
  nP1125["P1125 笨小猴"]
  nP1598["P1598 垂直柱状图"]

  nP5733 --> nP1914
  nP5733 --> nP1308
  nP1125 --> nP1598

P5733 大小写转换是入口:P1914 在它之上做移位,P1308 要大小写不敏感地数单词;P1125 先统计字符出现次数,P1598 再用统计结果画柱状图。

子串与映射表

flowchart TD
  nP3741["P3741 小果的键盘"]
  nP1321["P1321 单词覆盖还原"]
  nP1765["P1765 手机"]
  nP1603["P1603 斯诺登的密码"]

  nP3741 --> nP1321
  nP1765 --> nP1603

P3741 是子串替换,P1321 是它的「被覆盖之后还原」版本;P1765 建立按键到字母的映射表,P1603 用同一招把单词映射成数字再排序。

P1957(混合类型读入)、P5015(统计字符)、P5734(字符串操作综合)、P1553(分类讨论)、P1200(取模哈希)、P1597(语句解析模拟)各自独立。

【入门6】函数与结构体

洛谷官方子题单 · 15 题

先把函数写好

flowchart TD
  nP5735["P5735 距离函数"]
  nP5736["P5736 质数筛"]
  nP5737["P5737 闰年展示"]
  nP5738["P5738 歌唱比赛"]
  nP1304["P1304 哥德巴赫猜想"]
  nP1217["P1217 回文质数"]

  nP5735 --> nP5736
  nP5735 --> nP5737
  nP5735 --> nP5738
  nP5736 --> nP1304
  nP5736 --> nP1217

P5735 是最简单的「写一个函数」,之后 P5737、P5738 都是同一形态;P5736 把素数判断封成函数,P1304 与 P1217 都要反复调用它。

结构体

flowchart TD
  nP5740["P5740 最厉害的学生"]
  nP5741["P5741 旗鼓相当的对手(加强)"]
  nP5742["P5742 评等级"]
  nP5744["P5744 培训"]

  nP5740 --> nP5741
  nP5740 --> nP5742
  nP5740 --> nP5744

P5740 用一个结构体存学生信息,P5741 是它的加强版(两人互相比较),P5742 是结构体加条件判断,P5744 是结构体加模拟。

递归与递推

flowchart TD
  nP5739["P5739 计算阶乘"]
  nP5461["P5461 赦免战俘"]
  nP5743["P5743 猴子吃桃"]

  nP5739 --> nP5461
  nP5739 --> nP5743

P5739 递归求阶乘是递归入门,P5461 赦免战俘把它变成分治递归,P5743 猴子吃桃是从终态往前递推。

P1075(质因数分解)与 P2415(集合求和)和本节其他题没有前置关系。

【算法1-1】模拟与高精度

洛谷官方子题单 · 16 题

高精度

flowchart TD
  nP1601["P1601 高精度加法"]
  nP1303["P1303 A*B Problem"]
  nP1009["P1009 阶乘之和"]
  nP1591["P1591 阶乘数码"]
  nP1249["P1249 最大乘积"]
  nP1045["P1045 麦森数"]

  nP1601 --> nP1303
  nP1303 --> nP1009
  nP1303 --> nP1591
  nP1303 --> nP1249
  nP1601 --> nP1045

P1601 高精度加法是入口,P1303 乘法在它之上;再往后 P1009 阶乘之和与 P1591 阶乘数码都是乘法的直接应用,P1249 最大乘积要多一步数学结论,P1045 是加法配快速幂。

二维与周期模拟

flowchart TD
  nP1042["P1042 乒乓球"]
  nP1328["P1328 生活大爆炸版石头剪刀布"]
  nP2670["P2670 扫雷游戏"]
  nP4924["P4924 魔法少女小Scarlet"]

  nP1042 --> nP1328
  nP2670 --> nP4924

P1042 乒乓球是规则模拟,P1328 石头剪刀布也是「按周期表判胜负」;P2670 扫雷是二维格子模拟,P4924 在它之上做矩阵变换。

P1067(多项式输出)、P1098(字符串展开)、P1518(状态模拟)、P1563(环形模拟)、P1065(调度模拟)、P1786(排序模拟)都是各自独立的模拟题。

【算法1-2】排序

洛谷官方子题单 · 12 题

排序模板与基础应用

flowchart TD
  nP1177["P1177 排序"]
  nP1923["P1923 求第 k 小的数"]
  nP1059["P1059 明明的随机数"]
  nP1152["P1152 欢乐的跳"]

  nP1177 --> nP1923
  nP1177 --> nP1059
  nP1177 --> nP1152

P1177 是本节唯一的入口(先会调用排序):P1923 求第 k 小、P1059 排序去重、P1152 排序后比较相邻差。

多关键字排序

flowchart TD
  nP1177["P1177 排序"]
  nP1093["P1093 奖学金"]
  nP1068["P1068 分数线划定"]
  nP1104["P1104 生日"]
  nP1781["P1781 宇宙总统"]

  nP1177 --> nP1093
  nP1093 --> nP1068
  nP1093 --> nP1104
  nP1093 --> nP1781

同样从 P1177 出发:P1093 练多关键字比较,P1068 在它之上加「划线截取」,P1104 与 P1781 是另外两个多关键字场景(P1781 还要比大数)。

排序加贪心

flowchart TD
  nP1177["P1177 排序"]
  nP2676["P2676 Bookshelf B"]
  nP5143["P5143 攀爬者"]
  nP1116["P1116 车厢重组"]
  nP1271["P1271 选举学生会"]

  nP1177 --> nP2676
  nP1177 --> nP5143
  nP1177 --> nP1116
  nP1177 --> nP1271

排序当工具的三处用法:P2676 降序后取前缀、P5143 排序后算相邻距离、P1116 数冒泡交换次数;P1271 是计数排序——值域小的时候比直接 sort 更快。

【算法1-3】暴力枚举

洛谷官方子题单 · 14 题

DFS 生成组合与排列

flowchart TD
  nP1157["P1157 组合的输出"]
  nP1706["P1706 全排列问题"]
  nP1088["P1088 火星人"]
  nP1036["P1036 选数"]

  nP1157 --> nP1706
  nP1706 --> nP1088
  nP1157 --> nP1036

P1157 用 DFS 生成组合,P1706 换成排列,P1088 直接用现成的全排列枚举;P1036 选数是组合枚举加素数判断。

搜索剪枝

flowchart TD
  nP2089["P2089 烤鸡"]
  nP2036["P2036 PERKET"]
  nP2392["P2392 考前抱佛脚"]

  nP2089 --> nP2036
  nP2036 --> nP2392

P2089 烤鸡是最直白的 DFS 加剪枝,P2036 PERKET 是同一形态的选择型搜索,P2392 在它之上做子集枚举。

P2241(数方形)、P1618(三连击)、P1149(火柴棒等式)、P1217(回文质数)、P3799(拼木棒)、P3392(涂条纹)、P3654(First Step)都是「枚举所有情况再加判断」,彼此独立,先挑题面最短的做。

【算法1-4】递推与递归

洛谷官方子题单 · 15 题

递推

flowchart TD
  nP1255["P1255 数楼梯"]
  nP2437["P2437 蜜蜂路线"]
  nP1990["P1990 覆盖墙壁"]
  nP1028["P1028 数的计算"]
  nP1002["P1002 过河卒"]
  nP1164["P1164 小 A 点菜"]

  nP1255 --> nP2437
  nP1255 --> nP1990
  nP1002 --> nP1164

P1255 数楼梯是斐波那契递推的入口,P2437 蜜蜂路线与 P1990 覆盖墙壁都是它的一维推广;P1002 过河卒是二维网格递推,P1164 点菜在它之上做方案计数;P1028 数的计算是另一种递推。

递归

flowchart TD
  nP1464["P1464 Function"]
  nP3612["P3612 Secret Cow Code S"]
  nP1010["P1010 幂次方"]
  nP1228["P1228 地毯填补问题"]
  nP1498["P1498 南蛮图腾"]

  nP1464 --> nP3612
  nP1010 --> nP1228
  nP1010 --> nP1498

P1464 用记忆化把递归变快,P3612 是折半递归;P1010 幂次方是递归分解入门,P1228 地毯填补与 P1498 南蛮图腾都是它的图形版。

P1044(Catalan 递推)、P1036(组合搜索)、P1928(括号展开递归)、P1259(递归移动)各自独立。

【算法1-5】贪心

洛谷官方子题单 · 14 题

排序之后贪心

flowchart TD
  nP2240["P2240 部分背包问题"]
  nP1208["P1208 混合牛奶"]
  nP1478["P1478 陶陶摘苹果(升级版)"]
  nP1223["P1223 排队接水"]
  nP4995["P4995 跳跳!"]
  nP4447["P4447 分组"]

  nP2240 --> nP1208
  nP1223 --> nP4995

P2240 按单价排序把背包取满,P1208 是同一个模型换个背景;P1223 按接水时间排序算总等待,P4995 排序后左右横跳;P1478 与 P4447 也是排序加取数,但各自还要处理额外的约束。

相邻与差分贪心

flowchart TD
  nP3817["P3817 小 A 的糖果"]
  nP5019["P5019 铺设道路"]
  nP1803["P1803 线段覆盖"]

  nP3817 --> nP5019

P3817 只看相邻两个位置就能决定,P5019 铺设道路是它的差分版本;P1803 线段覆盖按右端点排序之后一路贪心。

排序规则与高精度

flowchart TD
  nP1012["P1012 拼数"]
  nP1106["P1106 删数问题"]
  nP1080["P1080 国王游戏"]

  nP1012 --> nP1106
  nP1012 --> nP1080

P1012 拼数要先想清楚「两个数谁排前面」的比较规则,P1106 删数与 P1080 国王游戏都建在这个规则上,并且都要高精度。

P1090(合并果子)要用堆、P1094(纪念品分组)是双指针贪心,它们与上面三张图没有前置关系。

【算法1-6】二分查找与二分答案

洛谷官方子题单 · 11 题

二分查找

flowchart TD
  nP2249["P2249 查找"]
  nP1678["P1678 烦恼的高考志愿"]
  nP1102["P1102 A-B 数对"]

  nP2249 --> nP1678
  nP2249 --> nP1102

P2249 是 lower_bound 模板,P1678 用它找最近的分数线,P1102 用它数差值等于 k 的数对。

二分答案

flowchart TD
  nP1873["P1873 砍树"]
  nP2440["P2440 木材加工"]
  nP2678["P2678 跳石头"]
  nP3853["P3853 路标设置"]
  nP1182["P1182 数列分段"]
  nP1163["P1163 银行贷款"]
  nP3743["P3743 小鸟的设备"]

  nP1873 --> nP2440
  nP1873 --> nP2678
  nP1873 --> nP3853
  nP1873 --> nP1182
  nP1163 --> nP3743

P1873 砍树是二分答案的模板(整数答案加单调判定),之后 P2440、P2678、P3853、P1182 都是「把答案二分掉再写一个 check」;浮点答案从 P1163 进到 P3743。

P1024 一元三次方程求根用二分或枚举,与上面两条线没有前置关系。

【算法1-7】搜索

洛谷官方子题单 · 16 题

DFS 回溯

flowchart TD
  nP1036["P1036 选数"]
  nP1219["P1219 八皇后"]
  nP2404["P2404 自然数的拆分问题"]
  nP2036["P2036 PERKET"]
  nP1433["P1433 吃奶酪"]

  nP1036 --> nP1219
  nP1036 --> nP2404
  nP1036 --> nP2036
  nP1036 --> nP1433

P1036 是最小的 DFS 枚举,之后 P1219 八皇后要加「冲突标记加回溯」、P2404 是拆分、P2036 是选择型、P1433 必须加剪枝才过。

网格 DFS

flowchart TD
  nP1605["P1605 迷宫"]
  nP1101["P1101 单词方阵"]
  nP1596["P1596 Lake Counting"]

  nP1605 --> nP1101
  nP1605 --> nP1596

P1605 迷宫是网格 DFS 模板,P1101 单词方阵要定好八个方向,P1596 Lake Counting 数四连通块。

BFS

flowchart TD
  nP1443["P1443 马的遍历"]
  nP1135["P1135 奇怪的电梯"]
  nP2895["P2895 Meteor Shower"]
  nP1825["P1825 Corn Maze"]
  nP1032["P1032 字串变换(疑似错题)"]
  nP1162["P1162 填涂颜色"]

  nP1443 --> nP1135
  nP1443 --> nP2895
  nP1443 --> nP1825
  nP1443 --> nP1032
  nP1443 --> nP1162

P1443 马的遍历是 BFS 求最短步数的模板,之后 P1135、P2895、P1825 都是「把状态压进队列」的变体,P1032 的状态是字符串,P1162 要先把外圈灌满再数。

P1019(单词接龙)与 P2392(子集枚举)和上面两条线没有前置关系。

【数据结构1-1】线性表

洛谷官方子题单 · 10 题

栈

flowchart TD
  nP1449["P1449 后缀表达式"]
  nP1241["P1241 括号序列"]
  nP4387["P4387 验证栈序列"]

  nP1449 --> nP1241
  nP1449 --> nP4387

P1449 后缀表达式是栈的模板,P1241 括号序列与 P4387 验证栈序列都在它之上做「进出栈顺序」的判定。

队列与链表

flowchart TD
  nP1996["P1996 约瑟夫问题"]
  nP1160["P1160 队列安排"]
  nP1540["P1540 机器翻译"]
  nP2058["P2058 海港"]

  nP1996 --> nP1160
  nP1540 --> nP2058

P1996 约瑟夫问题用队列模拟,P1160 队列安排要改成链表做插入删除;P1540 机器翻译是先进先出的缓存,P2058 海港是它的滑动窗口版。

数组与映射

flowchart TD
  nP3156["P3156 询问学号"]
  nP3613["P3613 寄包柜"]

  nP3156 --> nP3613

P3156 是最朴素的按下标取值,P3613 寄包柜要换成按柜号存一个 vector。

P2234 营业额统计要动态维护前驱后继,适合直接用 set 或平衡树,与本节其他题没有前置关系。

【数据结构1-2】二叉树

洛谷官方子题单 · 10 题

建树、遍历与树上统计

flowchart TD
  nP1305["P1305 新二叉树"]
  nP4913["P4913 二叉树深度"]
  nP1185["P1185 绘制二叉树"]
  nP3884["P3884 二叉树问题"]
  nP1364["P1364 医院设置"]
  nP1827["P1827 美国血统"]
  nP1030["P1030 求先序排列"]
  nP1229["P1229 遍历问题"]

  nP1305 --> nP4913
  nP1305 --> nP1185
  nP1305 --> nP3884
  nP4913 --> nP1364
  nP1827 --> nP1030
  nP1827 --> nP1229

P1305 新二叉树是「按描述建树」的入口,P4913 求深度、P1185 把树画出来、P3884 数深度与距离,P1364 在深度之上做带权重心;已知两种遍历推第三种从 P1827 起,P1030 求先序、P1229 数方案。

P4715(淘汰赛)与 P5076(普通二叉树)和上面这张图没有前置关系。

【数据结构1-3】集合

洛谷官方子题单 · 15 题

并查集

flowchart TD
  nP1551["P1551 亲戚"]
  nP1536["P1536 村村通"]
  nP1892["P1892 团伙"]
  nP2814["P2814 家谱"]
  nP1621["P1621 集合"]
  nP1955["P1955 程序自动分析"]

  nP1551 --> nP1536
  nP1551 --> nP1892
  nP1551 --> nP2814
  nP1551 --> nP1621
  nP1551 --> nP1955

P1551 亲戚是并查集模板,之后 P1536 数连通块、P1892 团伙要维护敌对关系、P2814 家谱要用 map 存名字、P1621 要先筛出素数再合并、P1955 要先离散化。

哈希与映射

flowchart TD
  nP3370["P3370 字符串哈希"]
  nP3405["P3405 Cities and States"]
  nP4305["P4305 不重复数字"]
  nP3879["P3879 阅读理解"]
  nP1102["P1102 A-B 数对"]
  nP5250["P5250 木材仓库"]
  nP5266["P5266 学籍管理"]

  nP3370 --> nP3405
  nP3370 --> nP4305
  nP3370 --> nP3879
  nP3370 --> nP1102
  nP5250 --> nP5266

P3370 字符串哈希是入口,P3405 把两个字符串哈希成一个键、P4305 去重、P3879 建倒排表、P1102 用哈希数数对;P5250 与 P5266 是用现成的有序容器,前者 set 后者 map。

P1525(关押罪犯)要二分图或带权并查集,P1918(保龄球)是哈希查表,它们与上面两张图没有前置关系。

【数据结构1-4】图的基本应用

洛谷官方子题单 · 10 题

建图与遍历

flowchart TD
  nP5318["P5318 查找文献"]
  nP2853["P2853 Cow Picnic S"]
  nP3916["P3916 图的遍历"]
  nP1363["P1363 幻象迷宫"]

  nP5318 --> nP2853
  nP5318 --> nP3916
  nP5318 --> nP1363

P5318 查找文献是建图模板(邻接表加排序加 DFS/BFS),P2853 用 DFS 数可达的牧场、P3916 要反向建图、P1363 幻象迷宫要在 BFS 里多存一维状态。

拓扑排序与 DAG

flowchart TD
  nP1113["P1113 杂务"]
  nP1807["P1807 最长路"]
  nP4017["P4017 最大食物链计数"]
  nP1347["P1347 排序"]
  nP1983["P1983 车站分级"]

  nP1113 --> nP1807
  nP1113 --> nP4017
  nP1113 --> nP1347
  nP1113 --> nP1983

P1113 杂务是拓扑排序求最长链的模板,P1807 是 DAG 上最长路、P4017 是 DAG 上路径计数、P1347 用拓扑判环、P1983 在拓扑分层之上再做差分。

P1127 词链是欧拉路径,与本节其他题没有前置关系。

【数学1】基础数学问题

洛谷官方子题单 · 24 题

进制与位运算

flowchart TD
  nP1143["P1143 进制转换"]
  nP1017["P1017 进制转换"]
  nP1100["P1100 高低位交换"]
  nP1469["P1469 找筷子"]

  nP1143 --> nP1017

P1143 任意进制互转是入口,P1017 是它的负数进制版;P1100 高低位交换与 P1469 找筷子都是位运算,直接上手即可。

组合计数

flowchart TD
  nP2822["P2822 组合数问题"]
  nP1866["P1866 编号"]
  nP2638["P2638 安全系统"]
  nP3913["P3913 车的攻击"]
  nP1246["P1246 编码"]

  nP2822 --> nP1866
  nP2822 --> nP2638
  nP2822 --> nP3913
  nP2822 --> nP1246

P2822 递推组合数是入口:P1866 编号与 P1246 编码是「第几个排列/组合」的换算,P2638 是隔板法,P3913 车的攻击要用容斥。

gcd 与 lcm

flowchart TD
  nP1029["P1029 最大公约数与最小公倍数"]
  nP4057["P4057 晨跑"]
  nP1572["P1572 计算分数"]
  nP1072["P1072 Hankson 的趣味题"]
  nP2651["P2651 添加括号"]
  nP2660["P2660 zzc 种田"]

  nP1029 --> nP4057
  nP1029 --> nP1572
  nP1029 --> nP1072
  nP1029 --> nP2651
  nP1029 --> nP2660

P1029 用 gcd 与 lcm 的关系反推数对是入口,之后 P4057 求最小公倍数周期、P1572 做分数运算、P1072 枚举约数、P2651 判约分后是否为整数、P2660 用辗转相除。

筛法与素数

flowchart TD
  nP3383["P3383 线性筛素数"]
  nP1835["P1835 素数密度"]
  nP2926["P2926 Patting Heads S"]
  nP1069["P1069 细胞分裂"]

  nP3383 --> nP1835
  nP3383 --> nP2926
  nP3383 --> nP1069

P3383 线性筛是模板,P1835 是区间筛、P2926 按倍数枚举、P1069 要质因数分解——都建立在一张素数表上。

约数、欧拉函数与因子和

flowchart TD
  nP3383["P3383 线性筛素数"]
  nP1403["P1403 约数研究"]
  nP1414["P1414 又是毕业季II"]
  nP3601["P3601 签到题"]
  nP1593["P1593 因子和"]

  nP3383 --> nP1403
  nP3383 --> nP1414
  nP3383 --> nP3601
  nP3383 --> nP1593

同样从 P3383 的筛法出发:P1403 数约数个数、P1414 按约数归类、P3601 要在筛的同时算欧拉函数、P1593 求因子和。

P2789 直线交点数靠递推或枚举,与上面五张图没有前置关系。