★ 看到「第 X 章也用这道题」时该怎么做
跨章重复是有意安排的:同一道题,第 11 章用归并排序做、第 38 章用树状数组再做一遍; 第 20 章用贪心做错、第 23 章用 DP 做对。第二次遇到时不要翻上次的代码 —— 用新学的方法从头写一遍, 然后拿上一次那份当对拍的标准答案。这正是这个站每一章都在教的做法。
⚠ 先写暴力,再交题
这些题绝大多数是洛谷的题,交上去只会告诉你「对 / 不对」。 真正能查出问题的是对拍:先写一份慢但肯定对的暴力,再写正解, 用随机数据比对 —— 每一章的「★ 对拍」那一步给的就是现成的架子。
筛一下共 273 条
- 1洛谷 P1028 数的计算解析 → NOIP2001。递归入门第一题,先想清楚「函数负责什么」
- 1洛谷 P5461 赦免战俘解析 → 递归分治,能把递归「画」出来,很直观
- 1洛谷 P1255 数楼梯解析 → ★ 第 2、17、21、44 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 斐波那契。会 TLE —— 别急着优化,记住这个感觉,第 17 章解决它
- 1洛谷 P1044 栈解析 → ★ 第 21、43 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 进阶。想不出来就先跳过,学完第 17 章再回来
- 2洛谷 P1228 地毯填补问题解析 → 和汉诺塔同一个套路:切成四块,其中三块想办法变成同一个小问题。想通了代码很短
- 2洛谷 P1255 数楼梯解析 → ★ 第 1、17、21、44 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 斐波那契本尊。递归会 TLE —— 先用递推过掉,高精度部分慢慢写
- 2洛谷 P1464 Function解析 → 照着题意直接写递归会跑不完,正好体会「子问题重叠」。加个数组就过了
- 2洛谷 P1096 Hanoi 双塔问题解析 → NOIP1998。汉诺塔的变形,先推出公式,再写高精度。想不出来可以先跳过
- 3洛谷 P1706 全排列问题解析 → ★ 第 13 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 模板题,必须一次写对
- 3洛谷 P1157 组合的输出解析 → 从排列改成组合,只需改一个地方 —— 想清楚是哪个
- 3洛谷 P1036 选数解析 → NOIP2002。子集和的变形,多了个质数判断
- 3洛谷 P2036 PERKET解析 → 标准的「每个都选或不选」,和本章例题几乎同构
- 4洛谷 P1219 八皇后 Checker Challenge解析 → USACO。本章原题加了输出前三个解,必须一次写对
- 4洛谷 P1025 数的划分解析 → NOIP2001。搜索 + 剪枝,关键是想清楚「怎么避免数出重复的划分」
- 4洛谷 P1123 取数游戏解析 → 标准的「选或不选 + 冲突检查 + 撤销」,和本章几乎同构
- 4洛谷 P1731 生日蛋糕解析 → ★ 第 16 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOI1999。剪枝的天花板,不剪必超时。现在做不出很正常,学完第 16 章再来
- 5洛谷 P1996 约瑟夫问题解析 → ★ 第 45 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 本章原题(要输出出局顺序,所以老实模拟就行)。模板题,必须一次写对
- 5洛谷 P1618 三连击(升级版)解析 → 枚举 + 约束。想清楚「枚举哪一个数就够了」,别三个都枚举
- 5洛谷 P1042 乒乓球解析 → NOIP2003。纯模拟,坑全在边界上 —— 最后一局没打完也要输出
- 5洛谷 P1563 玩具谜题解析 → NOIP2016。模拟 + 方向绕,先在纸上把「朝内朝外」画清楚再动手
- 6洛谷 P8218 求区间和解析 → 一维前缀和模板题,五分钟应该写完
- 6洛谷 P1719 最大加权矩形解析 → ★ 第 45 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 二维前缀和 + 枚举矩形。经典组合,值得写熟
- 6洛谷 P2367 语文成绩解析 → ★ 第 38 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 差分模板题。不用差分会 TLE,正好验证这一章学没学会
- 6洛谷 P3406 海底高铁解析 → 差分的实战应用,要先想清楚「哪一段被走了几次」
- 7洛谷 P1147 连续自然数和解析 → 滑动窗口模板题。连续自然数天然是正数,前提刚好满足
- 7洛谷 P1102 A-B 数对解析 → ★ 第 8 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 排序 + 双指针(或二分)。注意重复元素 —— 这一章第 12 步刚踩过的坑
- 7洛谷 P1638 逛画展解析 → 滑动窗口 + 计数数组,求「包含全部种类的最短区间」。经典变形
- 7洛谷 P1873 砍树解析 → ★ 第 8、9 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 这题其实是二分答案(下一章)。先自己想想能不能用双指针 —— 想清楚「为什么不能」,比会做还有价值
- 8洛谷 P2249 查找解析 → lower_bound 模板题。先手写一遍,再用 STL 写一遍,对比结果
- 8洛谷 P1102 A-B 数对解析 → ★ 第 7 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 上一章用双指针做过,现在用「排序 + 两次二分」再做一遍 —— 这题正好是 U-L 的用武之地
- 8洛谷 P1873 砍树解析 → ★ 第 7、9 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 二分答案。做不出来很正常,下一章就讲它 —— 但可以先自己试试
- 8洛谷 P1024 一元三次方程求解解析 → ★ 第 9 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2001。实数二分,注意精度和循环终止条件(不能用 l < r)
- 9洛谷 P1182 数列分段 Section II解析 → 本章原题。必须一次写对
- 9洛谷 P1873 砍树解析 → ★ 第 7、8 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 入门二分答案。check 是「按这个高度砍,能得到多少木材」
- 9洛谷 P2678 跳石头解析 → NOIP2015。最小值最大化,check 是贪心地数「要移走几块石头」
- 9洛谷 P1024 一元三次方程求解解析 → ★ 第 8 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2001。实数二分,终止条件要用精度(while (r - l > 1e-6))而不是 l < r
- 10洛谷 P1177 排序解析 → ★ 第 11、37、45 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 排序模板题。先用 sort 交一遍,再用自己手写的归并交一遍
- 10洛谷 P1068 分数线划定解析 → NOIP2009。标准的多关键字排序,本章后半场的原题
- 10洛谷 P1104 生日解析 → 三关键字排序 + 稳定性要求。正好练「用输入顺序当兜底关键字」
- 10洛谷 P1271 选举学生会解析 → 数据范围很大但值域很小 —— 想想能不能不用比较排序(计数排序)
- 11洛谷 P1908 逆序对解析 → ★ 第 38 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 本章原题,模板。注意开 long long
- 11洛谷 P1966 火柴排队解析 → ★ 第 52 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2013。要先想明白「答案等价于求某个排列的逆序对数」,转化是难点
- 11洛谷 P1177 排序解析 → ★ 第 10、37、45 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 上一章那道模板题,这次专门用手写归并交一遍
- 11洛谷 P1115 最大子段和解析 → ★ 第 12、45 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 先用 O(n) 的做法过掉,再试着用分治写一遍 —— 练「跨越中点的那部分怎么算」
- 12洛谷 P1115 最大子段和解析 → ★ 第 11、45 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 本章原题。先用扫描版过掉,再用分治版交一次
- 12洛谷 P1923 求第 k 小的数解析 → 快速选择模板题。n 到 500 万,sort 也能过,但正好拿它练手写
- 12洛谷 P1226 快速幂解析 → ★ 第 42、46 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 另一个经典分治:a^b = (a^(b/2))² —— 每次问题规模减半。第 42 章会细讲
- 12洛谷 P1010 幂次方解析 → NOIP1998。递归分解 + 输出格式,练「把问题切成同形状的小问题」
- 13洛谷 P1596 Lake Counting S解析 → 本章模板题,只是改成八连通 —— 改方向数组即可
- 13洛谷 P1451 求细胞数量解析 → 和本章几乎一模一样,先拿它练手
- 13洛谷 P1162 填涂颜色解析 → ★ 第 30 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 要从「外面」往里染色 —— 想想为什么不能从里面开始
- 13洛谷 P1706 全排列问题解析 → ★ 第 3 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 回头复习第 3 章:确认自己看得出它和本章是同一个 DFS
- 14洛谷 P1443 马的遍历解析 → ★ 第 15、30 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 BFS 模板题,只是方向从 4 个变成 8 个(马走日)
- 14洛谷 P1746 离开中山路解析 → ★ 第 45 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 和本章例题几乎一样,起终点由输入给定
- 14洛谷 P1747 好奇怪的游戏解析 → 两个起点各跑一次 BFS
- 14洛谷 P1332 血色先锋队解析 → ★ 第 15 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 多源 BFS —— 把所有起点一开始就全塞进队列,想想为什么这样是对的
- 15洛谷 P1332 血色先锋队解析 → ★ 第 14 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 多源 BFS 模板题,本章前半场的原题
- 15洛谷 P1443 马的遍历解析 → ★ 第 14、30 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 单源 BFS,但邻居有 8 个方向。先把「邻居是什么」想清楚
- 15洛谷 P1379 八数码难题解析 → ★ 第 18 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 本章后半场原题。BFS 能过,学完第 18 章可以回来用双向 BFS 再写一遍
- 15洛谷 P1135 奇怪的电梯解析 → NOIP2007。状态是「在第几层」,边是「上 K[i] 层或下 K[i] 层」—— 典型的状态图 BFS
- 16洛谷 P1074 靶形数独解析 → NOIP2009。搜索顺序剪枝的教科书 —— 先填候选最少的格子,和本章「先安排重的猫」是同一个道理
- 16洛谷 P1120 小木棍解析 → 剪枝的经典硬骨头,要用到五六种剪枝。做不出来很正常,把题解里每个剪枝都想明白就是收获
- 16洛谷 P1731 生日蛋糕解析 → ★ 第 4 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOI1999。最优性剪枝的教科书,需要预处理「最小体积/面积」当估价函数
- 16洛谷 P1518 两只塔姆沃斯牛解析 → 换换脑子:状态是「两头牛的位置和朝向」,用第 15 章的状态图思路
- 17洛谷 P1216 数字三角形解析 → ★ 第 21 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 IOI1994。本章原题,先交记忆化版,再交递推版
- 17洛谷 P1002 过河卒解析 → ★ 第 21 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2002。方案数计数,把 max 换成 +
- 17洛谷 P1434 滑雪解析 → 记忆化搜索的经典题。这题用递推很难写,用记忆化很自然 —— 体会一下
- 17洛谷 P1255 数楼梯解析 → ★ 第 1、2、21、44 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 第 1 章那道会 TLE 的题,现在回去用记忆化解决它
- 18洛谷 P1379 八数码难题解析 → ★ 第 15 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 本章原题。用双向 BFS 或 IDA* 各交一遍,对比一下耗时
- 18洛谷 P2324 骑士精神解析 → SCOI2005。IDA* 的经典题,估价函数是「有几个棋子不在位」
- 18洛谷 P1032 字串变换解析 → NOIP2002。双向 BFS 的经典题,起点终点都明确 —— 正好符合前提
- 18洛谷 P1516 青蛙的约会解析 → 换换脑子:这题看着像搜索,其实是数学(扩展欧几里得)。练「先判断该不该搜」
- 19洛谷 P1223 排队接水解析 → 本章原题。注意它要输出的是排队顺序和平均等待时间(保留两位小数),比本章多一步输出格式
- 19洛谷 P1803 凌乱的yyy / 线段覆盖解析 → 本章第二道题的原题,端点重合的约定也和这里一致
- 19洛谷 P2240 部分背包问题解析 → ★ 第 20 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 按「单位价值」排序 —— 排序关键字是算出来的,不是直接给的。想清楚交换论证为什么在这里成立(而在 01 背包里不成立,见第 23 章)
- 19洛谷 P1094 纪念品分组解析 → NOIP2007。排序之后用第 7 章的对撞双指针,最贵的配最便宜的。交换论证要动点脑筋
- 19洛谷 P1090 合并果子解析 → ★ 第 20、37 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2004。每次合并最小的两堆 —— 但一次排序不够用,因为合并出来的新堆还要重新参与排序。这题在等第 37 章的堆,先用 sort 硬做也能过
- 20洛谷 P1080 国王游戏解析 → ★ 第 44 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2012。交换论证的教科书题:按 a×b 排序。先自己推交换论证,再看题解。(要写高精度,可以先只做证明部分)
- 20洛谷 P1048 采药解析 → ★ 第 23 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2005。就是本章的 01 背包 —— 故意先用性价比贪心交一发,看着它 WA,再学第 23 章的 DP。这一发 WA 值得挨
- 20洛谷 P2240 部分背包问题解析 → ★ 第 19 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 同一个贪心,这里是对的。和上一题对照着做,本章第 9 步那段论证会刻进脑子里
- 20洛谷 P5019 铺设道路解析 → NOIP2018。贪心是对的,但你得说得出为什么。先写暴力对拍,再想证明
- 20洛谷 P1090 合并果子解析 → ★ 第 19、37 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2004。「每次合并最小的两堆」是对的,但「一次排序后顺着合并」是错的 —— 又一个「差一点点就错」的例子。第 37 章会用堆重做它
- 21洛谷 P1216 数字三角形解析 → ★ 第 17 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 IOI1994。本章原题,先交记忆化版再交递推版,对比一下提交记录里的用时和内存
- 21洛谷 P1255 数楼梯解析 → ★ 第 1、2、17、44 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 爬楼梯的原题,但 n 到 5000 —— 答案上千位,必须写高精度。递推部分你已经会了,这题练的是高精度加法
- 21洛谷 P1002 过河卒解析 → ★ 第 17 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2002。二维递推,把 max 换成 +(计数)。注意马的控制点和边界,以及 long long
- 21洛谷 P1044 栈解析 → ★ 第 1、43 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2003。卡特兰数。状态不好设 —— 先老实写搜索,再从搜索里找状态,正是本章第 13 步那套流程
- 21洛谷 P1077 摆花解析 → ★ 第 24 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2012。状态要开二维(第几种花、已经摆了几盆),是通向第 23 章背包的过渡题
- 22洛谷 B3637 最长上升子序列解析 → 模板题,n ≤ 5000,O(n²) 就能过。先交 O(n²) 再交 O(n log n),对比一下用时
- 22洛谷 P1020 导弹拦截解析 → NOIP1999。必须用 O(n log n)。第二问要用 Dilworth 定理(最少的不升子序列个数 = 最长上升子序列长度),而且两问一个用 lower_bound 一个用 upper_bound —— 本章第 10 步那个坑的实战版
- 22洛谷 P1439 最长公共子序列解析 → 两个排列的 LCS 可以转成 LIS 来做(把第二个序列按第一个的位置重新编号)。转化很巧,值得专门想明白
- 22洛谷 P1091 合唱队形解析 → NOIP2004。正着做一遍 LIS、倒着做一遍,然后枚举中间那个人 —— 「跑两遍 DP」的经典入门题
- 22洛谷 P2782 友好城市解析 → 排序之后就是 LIS。难点在看出「排完序之后这题就是 LIS」,这一步才是 DP 题的真正门槛
- 23洛谷 P1048 采药解析 → ★ 第 20 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2005。最标准的 01 背包模板题,时间就是重量、价值就是价值。先交二维再交一维,对比一下内存
- 23洛谷 P1049 装箱问题解析 → NOIP2001。只有体积没有价值 —— 把体积同时当价值就行。这一步转化是背包题的第一道门槛
- 23洛谷 P1164 小A点菜解析 → 求「恰好花完」的方案数。本章第 12 步那个套路的直接应用:初值 f[0] = 1,其余 0,转移从 max 换成加法
- 23洛谷 P1060 开心的金明解析 → NOIP2006。价值 = 价格 × 重要度,读懂题就是模板。适合用来确认自己是真的会了
- 23洛谷 P2925 干草出售解析 → USACO。「恰好装满」的味道,而且数据范围大到必须用一维 —— 二维会 MLE
- 23洛谷 P1877 音量调节解析 → 状态是「能不能达到某个音量」(布尔背包)。转移变成 f[j] |= f[j-w],倒序的道理一模一样
- 24洛谷 P1616 疯狂的采药解析 → 完全背包裸题,就是第 23 章 P1048 的完全背包版。两题对着交一遍,方向的差别一辈子忘不了
- 24洛谷 P1853 投资的最大效益解析 → 完全背包 + 多年滚动。每年跑一次完全背包,本金滚到下一年 —— 「DP 套在循环里」的入门题
- 24洛谷 P1776 宝物筛选解析 → ★ 第 35 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 多重背包模板题,n·k 大到不拆分必 TLE。二进制拆分的标准练习
- 24洛谷 P2347 砝码称重解析 → NOIP1996。布尔多重背包(能不能称出某个重量),转移是 f[j] |= f[j-w]。数据小,拆不拆都能过 —— 正好拿来验证「拆完答案不变」
- 24洛谷 P1077 摆花解析 → ★ 第 21 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 NOIP2012。多重背包的方案数版本:max 换成加法、初值 f[0]=1(第 23 章第 12 步那个套路)
- 24洛谷 P5365 英雄联盟解析 → 进阶。要先看出「买 k 个皮肤的花费」是分组背包/多重的味道,而且答案要开 long long。适合确认自己是真的会了
- 25洛谷 P1855 榨取kkksc03解析 → 二维费用裸题(钱和时间两个上限)。注意两个上限都只有 200 —— 这就是本章第 7 步说的那个信号
- 25洛谷 P1507 NASA的食物计划解析 → 同样是二维费用(体积和质量),换了张皮。两题对着写一遍,「多一层循环」就再也忘不了
- 25洛谷 P1757 通天之分组背包解析 → 分组背包模板题。输入是「每件物品自带组号」,先归类再跑 —— 正好练一遍本章那个输入格式的转换
- 25洛谷 P1064 金明的预算方案解析 → NOIP2006。主件 + 附件,看上去是新题型,其实是分组背包:把「主件单买 / 主件+附件1 / 主件+附件2 / 主件+两个附件」当成一组里的四件互斥物品。★ 这题是「看出它是分组背包」的经典训练
- 25洛谷 P1541 乌龟棋解析 → NOIP2010。四种卡片各用了几张 → 四维费用,也就是四层循环。本章那句「多一维就多一层」的极致版本
- 25洛谷 P5322 排兵布阵解析 → BJOI2019。进阶:先想清楚「对第 i 座城堡派 x 个兵能赢几个对手」,再把每座城堡的所有 x 当成一组。适合确认自己是真的会了
- 26洛谷 P1775 石子合并(弱化版)解析 → 本章原题,直线版。写完直接交,一遍就该过
- 26洛谷 P1880 [NOI1995] 石子合并解析 → ★ 环形版,而且要同时求最小和最大。关键技巧是「破环成链」:把序列复制一遍接在后面,跑长度为 n 的所有区间。求最大值只需要把 min 换成 max —— 但那个错误贪心对最大值同样是错的
- 26洛谷 P1063 [NOIP2006 提高组] 能量项链解析 → 环形区间 DP 的另一张皮。合并的代价换了个公式,框架一个字不用改 —— 正好确认自己抓到的是框架而不是那道题
- 26洛谷 P1040 [NOIP2003 提高组] 加分二叉树解析 → ★ 区间 DP + 输出方案,本章第 11 步那套 from[l][r] 回溯原样能用。而且它的「根」就是本章的「断点」
- 26洛谷 P4170 [CQOI2007] 涂色解析 → 区间 DP 经典。转移里多了一个「两端颜色相同」的特判,想清楚那个特判为什么成立
- 26洛谷 P1220 关路灯解析 → 进阶:状态在区间之外还要多记一维「人现在站在左端还是右端」。适合确认自己是真的会了「状态该怎么定」
- 27洛谷 P1352 没有上司的舞会解析 → ★ 第 52 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 本章原题。注意它的输入多一行 0 0 结尾,而且根同样要自己找
- 27洛谷 P2016 战略游戏解析 → ★ 最小点覆盖:选最少的点,让每条边至少有一个端点被选。和本章是一对「反着的」题 —— 转移里那个 max 变成 min,f[u][1] 那一项也要跟着变。写完对比一下两份代码,只差几个字
- 27洛谷 P1122 最大子树和解析 → 状态只有一维(这题不需要「选不选」),但正好练「有负数时该不该要这个儿子」。提示:max(0, f[v])
- 27洛谷 P2015 二叉苹果树解析 → ★ 树形背包:状态是 f[u][j] = 在 u 的子树里保留 j 条边。它把本章的树形 DP 和第 23 章的背包缝在了一起,是最经典的进阶题
- 27洛谷 P1273 有线电视网解析 → 进阶的树形背包(分组背包版),正好回收第 25 章。想清楚「每个儿子是一组」这句话
- 27洛谷 P3478 [POI2008] STA-Station解析 → 换根 DP 入门:先求出以 1 为根的答案,再 O(1) 推到每个点当根。它是树形 DP 的下一站,值得提前看一眼
- 28洛谷 P1171 售货员的难题解析 → 本章原题(TSP 模板)。写完直接交,一遍就该过
- 28洛谷 P1433 吃奶酪解析 → ★ 就是本章「忘了加回起点」解的那道题 —— 不用回来。另外它给的是坐标、距离是浮点数,正好练一下「浮点只能按容差比」(第 20 章那个坑)
- 28洛谷 P1896 [SCOI2005] 互不侵犯解析 → ★ 另一大类状压:棋盘按行 DP,状态是「这一行的国王摆放方案」。先想清楚「同一行内合法」和「相邻两行合法」怎么用位运算判
- 28洛谷 P1879 [USACO06NOV] Corn Fields解析 → 棋盘状压的入门版,比 P1896 简单一档。适合先做这道再做上面那道
- 28洛谷 P2704 [NOI2001] 炮兵阵地解析 → 进阶:影响范围跨两行,所以状态要记「前两行」。经典中的经典
- 28洛谷 P3959 [NOIP2017 提高组] 宝藏解析 → 进阶:状压 + 分层。做得动这道,状压 DP 就算入门了
- 29洛谷 B3643 图的存储解析 → 本章的模板题:同时输出邻接矩阵和邻接表。写完对着本章三份代码检查一遍
- 29洛谷 P5318 【深基18.例3】查找文献解析 → ★ 第 30 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 建图 + DFS/BFS,而且要求邻居按编号从小到大访问 —— 正好逼你想清楚「前向星的邻居是倒序出来的」这件事
- 29洛谷 P3916 图的遍历解析 → ★ 第 30 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 反向建图的经典入门题。它会让你真正理解「有向图存一遍 vs 存两遍」的区别
- 29洛谷 P1113 杂务解析 → ★ 第 31 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 建图 + 拓扑序 DP(第 31 章的预习)。这题的边是有向的,正好和本章的无向图对照着写
- 29洛谷 P2853 [USACO06DEC] Cow Picnic解析 → 多次 DFS,n 和 m 都不大 —— 适合拿三种存法各写一遍,实测比一比
- 29洛谷 P1330 封锁阳光大学解析 → 进阶:二分图判定。⚠ 题面只保证「没有重边」——「一个字都没说没有自环」,而一个自环就必然 Impossible;另外图也不保证连通。解析页把这两件事各量了一遍(重边实测零影响)
- 30洛谷 P5318 【深基18.例3】查找文献解析 → ★ 第 29 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 本章的模板题:一张图上分别跑 DFS 和 BFS。要求邻居按编号从小到大 —— 正好逼你想清楚建图之后要不要排序
- 30洛谷 P3916 图的遍历解析 → ★ 第 29 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 反向建图 + 从大到小跑 DFS。做完你会真正明白「有向图存一遍 vs 存两遍」
- 30洛谷 B3625 迷宫寻路解析 → 网格连通性 —— 故意留一道网格题,用本章的图版思路再做一遍,对照第 13 章
- 30洛谷 P1443 马的遍历解析 → ★ 第 14、15 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ BFS 求最短步数,但「邻居」是马走日的 8 个方向 —— 这一章那句话的最好注脚:换的只是邻居
- 30洛谷 P1141 01迷宫解析 → ★ 连通块 + 记住每块的大小。多次询问,一次染色全部答完 —— 「连通块编号」这个技巧非常常用
- 30洛谷 P1162 填涂颜色解析 → ★ 第 13 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 进阶:从外圈往里灌水(补集思维)。它会逼你想清楚「哪些点该当起点」
- 31洛谷 B3644 【模板】拓扑排序解析 → 本章模板题。写完对着 fast.cpp 逐行检查一遍
- 31洛谷 P1113 杂务解析 → ★ 第 29 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 拓扑序 + DP:每个任务的最早完成时间。第 21 章那句「依赖谁就先填谁」在这里字面成立
- 31洛谷 P1347 排序解析 → ★ 边一条一条加进来,每加一条就判一次「已确定 / 有矛盾 / 还不确定」。逼你想清楚「拓扑序唯一」是什么意思
- 31洛谷 P4017 最大食物链计数解析 → 拓扑序上做计数 DP。答案要取模,正好复习第 42 章要讲的那些坑
- 31洛谷 P1983 [NOIP2013 普及组] 车站分级解析 → 进阶:难点全在建图上,边要靠「虚点」来省。建完图之后就是模板
- 31洛谷 P2712 摄像头解析 → 判环 + 拓扑删点:入度 = 被几个摄像头监视着,剥不掉的就是环里的。⚠ 题面写着「0 ≤ x, y ≤ 500」——「位置编号本来就小,开个 501 的数组就够,不用离散化」;真正没被题面排除的是「自环」(摄像头监视自己所在的位置)
- 32洛谷 P3371 【模板】单源最短路径(弱化版)解析 → 本章模板题。朴素 O(n²) 就能过,先拿它把三句话写熟
- 32洛谷 P4779 【模板】单源最短路径(标准版)解析 → ★ 同一道题卡了朴素版,必须堆优化。正好把第 7 步那张表在评测机上再验一次
- 32洛谷 P1339 [USACO09OCT] Heat Wave G解析 → 无向图版:一条边存两遍。写完想一想为什么无向图不影响这一章的任何结论
- 32洛谷 P1629 邮递员送信解析 → ★ 去程一遍 Dijkstra,回程把所有边反向再跑一遍。「反向建图」是很值钱的一招
- 32洛谷 P1462 通往奥格瑞玛的道路解析 → 进阶:二分答案 + Dijkstra 判可行。第 9 章那套二分答案在图上的第一次登场
- 32洛谷 P1073 [NOIP2009 提高组] 最优贸易解析 → 进阶:需要分层图 / 正反两遍最短路。想清楚「状态」是什么,这道题就塌了
- 33洛谷 B3647 【模板】Floyd解析 → 本章模板题。写完对着 brute.cpp 逐行检查三重循环的顺序
- 33洛谷 P3385 【模板】负环解析 → ★ 判负环模板。注意它问的是「从 1 出发能不能走到负环」—— 正是本章第 1 步那件事
- 33洛谷 P1119 灾后重建解析 → ★ Floyd 的神题:村庄按时间一个个修好,正好就是「k 一层一层加进去」。做完你会真的懂 k 为什么在最外层
- 33洛谷 P2865 [USACO06NOV] Roadblocks G解析 → 次短路。把「最短」拆成两个状态,松弛的写法要改一改
- 33洛谷 P1266 速度限制解析 → 进阶:状态里要带上「当前速度」——「状态是什么」这件事比算法本身难
- 33洛谷 P2850 [USACO06DEC] Wormholes G解析 → 虫洞 = 负权边,问有没有负环。多组数据,注意每组都要清干净
- 34洛谷 P3366 【模板】最小生成树解析 → 本章模板题。⚠ 它不连通时要求输出 orz,正好对应本章那句 IMPOSSIBLE
- 34洛谷 P1546 [USACO3.1] 最短网络解析 → ★ 邻接矩阵给的稠密图 —— 正好是本章第 12 步那张表里「朴素 Prim 占优」的那一档
- 34洛谷 P1195 口袋的天空解析 → ★ 只要连成 k 棵树 —— 那就少合并 k−1 次。做完你会发现 Kruskal 的循环本来就在数这个
- 34洛谷 P2820 局域网解析 → 要「删掉的边权和最大」—— 换个说法就是「留下的最小」。第 6 步那条恒等式的邻居
- 34洛谷 P1547 [USACO05MAR] Out of Hay S解析 → ★ 问的是最小生成树里「最长的那条边」。想一想:为什么它一定是所有生成树里最小的「最长边」
- 34洛谷 P2872 [USACO07DEC] Building Roads S解析 → 进阶:已有一些路(权值当 0)+ 坐标算距离。建图比算法难,正是本章说的「m 会很大」
- 35洛谷 P5788 【模板】单调栈解析 → 最裸的那一问:每个数右边第一个更大的在哪。本章第 5 步那段代码去掉算面积就是它
- 35洛谷 P1886 滑动窗口 / 单调队列解析 → 本章后半章的原题,两行输出一个字不差
- 35洛谷 SP1805 HISTOGRA - Largest Rectangle in a Histogram解析 → 本章前半章的原题。⚠ 记得开 long long
- 35洛谷 P2866 [USACO06NOV] Bad Hair Day S解析 → ★ 换个方向问「右边第一个更高的」—— 正好检验你有没有把方向背成死的
- 35洛谷 P1440 求m区间内的最小值解析 → 单调队列,但窗口是「前 m 个」—— 边界比模板题还容易写错,正好练第 10 步那个差一
- 35洛谷 P1776 宝物筛选解析 → ★ 第 24 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 多重背包,n·W 到了 10⁷ 级别 —— 本章第 11 步那份 O(nW) 的用武之地
- 35洛谷 P4147 玉蟾宫解析 → 进阶:把柱状图那道题在「每一行」上做一遍,就是最大子矩形。这一步跨得比看起来小
- 36洛谷 P3367 【模板】并查集解析 → 本章那道题去掉最后一行输出。写完拿 count.cpp 的思路给自己数一遍跳步数
- 36洛谷 P1551 亲戚解析 → 最裸的连通性查询,5 分钟的题 —— 用它确认你默写的版本是对的
- 36洛谷 P1892 [BOI2003] 团伙解析 → ★ 「敌人的敌人是朋友」:扩展域并查集,把点数翻倍。第一次见会觉得很妙
- 36洛谷 P2024 [NOI2001] 食物链解析 → ★★ 带权 / 扩展域并查集的经典题,难度上一个台阶。想清楚「三倍点」或者「到根的距离模 3」
- 36洛谷 P1197 [JSOI2008] 星球大战解析 → ★ 并查集只能合并、不能拆开 —— 所以要把时间倒过来跑。这条限制正是这一章那片森林的必然结果
- 36洛谷 P1955 [NOI2015] 程序自动分析解析 → ★ 先离散化再并查集;先做完所有「相等」再验「不等」—— 顺序错了就全错
- 36洛谷 P3958 [NOIP2017 提高组] 奶酪解析 → 把「两球相交」当成一条边,就是连通性。练的是「看出这是并查集」这一步
- 37洛谷 P3378 【模板】堆解析 → 本章那道题去掉最后一行输出。先手写一遍,再用 priority_queue 写一遍,两份互相对拍
- 37洛谷 P1090 [NOIP2004 提高组] 合并果子解析 → ★ 第 19、20 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 堆 + 贪心的入门题(哈夫曼)。回头看第 19、20 章:这个贪心为什么对,交换论证还在不在
- 37洛谷 P1177 【模板】排序解析 → ★ 第 10、11、45 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 用堆排序过一遍:建堆 O(n) + n 次 pop。顺带体会「原地排序、不要额外空间」
- 37洛谷 P1801 黑匣子解析 → ★★ 对顶堆:一个大根堆 + 一个小根堆,中间卡着第 k 小。想清楚两边什么时候要互相倒一个过去
- 37洛谷 P1168 中位数解析 → ★★ 对顶堆最经典的用法,和上一题是同一招。做完这两道,堆才算真的会用
- 37洛谷 P2085 最小函数值解析 → ★ 多路归并:n 个递增序列里取前 m 小。堆里永远只放 n 个候选 —— 和本章「大小为 k 的堆」同源
- 37洛谷 P1631 序列合并解析 → ★ 上一题的双序列版。想清楚「为什么不用把 n² 个和全造出来」
- 38洛谷 P3374 【模板】树状数组 1解析 → ★ 第 39 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 本章那道题的原题(单点加 + 区间和)。先合上页面默写 lowbit / add / sum 三段再交,别翻回第 7 步
- 38洛谷 P3368 【模板】树状数组 2解析 → ★ 反过来:区间加 + 单点查。做法是在「差分数组」上建树状数组 —— 第 6 章那对逆运算在这儿又用上了一次
- 38洛谷 P2367 语文成绩解析 → ★ 第 6 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 第 6 章用纯差分做过(那时数组不再变,最后统一还原一次)。这道题边改边问,才非上树状数组不可 —— 两份代码摆在一起,多出来的正是「可修改」这三个字
- 38洛谷 P1908 逆序对解析 → ★ 第 11 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 第 11 章用归并做过,本章第 13 步用树状数组重做了一遍。交一份树状数组版,然后和你第 11 章那份对拍 —— 生成器都不用换
- 38洛谷 P1972 [SDOI2009] HH 的项链解析 → ★★ 难度上一个台阶:询问离线、按右端点排序,每种颜色只在「最后一次出现的位置」记 1。想明白「为什么排完序就能一遍扫完」,树状数组才算真的会用
- 39洛谷 P3372 【模板】线段树 1解析 → 本章那道题的原题(区间加 + 区间和)。动手前先把 lz[o] 的含义一字不差说出来 —— 主语是「儿子们」
- 39洛谷 P1531 I Hate It解析 → ★ 单点改 + 区间最大值 —— 自测清单里「只需改哪两处」的实测场。改完回头看:pushup 换了,而 apply 里那个「乘区间长度」为什么就没了
- 39洛谷 P3374 【模板】树状数组 1解析 → ★ 第 38 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 第 38 章交过的那道,这次用线段树再交一遍。本章第 13 步已经把两份代码摆在一起了,但亲手交两遍才有体感:行数、耗时、以及「哪一份改成区间最值只要动两处」
- 39洛谷 P1198 [JSOI2008] 最大数解析 → ★ 强制在线(上一次询问的结果参与下一次输入),离线排序那条路被堵死了。顺带练「只往末尾插入」的建树写法
- 39洛谷 P3373 【模板】线段树 2解析 → ★★ 加法和乘法两个懒标记,难点全在下推顺序:先乘后加,而且乘的时候加标记要跟着一起乘。做完这道,「lz 的主语是儿子」才算刻进去
- 40洛谷 P1029 [NOIP 2001 普及组] 最大公约数和最小公倍数问题解析 → 设 P = x₀·a、Q = x₀·b,则 a·b = y₀/x₀ 且 gcd(a,b) = 1,枚举因子即可。⚠ 先判 y₀ % x₀ 是不是 0 —— 这是本章第 7 步那半章坑的同类
- 40洛谷 P1888 三角函数解析 → 五行题:★ 要的是「最短边 / 斜边」(较小锐角对着最短边,而 sin = 对边/斜边),再用 gcd 约分。⚠⚠ 这里原来写的是「最小两边之比」—— 那是 tan 不是 sin,2026-09-01 照样例 3 5 4 → 3/5 订正(详见解析页)
- 40洛谷 P1372 又是毕业季I解析 → ★ 答案是 n/k,但要说得出为什么 —— 提示:取 d、2d、…、kd,需要 kd ≤ n。练的是「看出它是 gcd」这一步,不是 gcd 本身
- 40洛谷 P2651 添加括号III解析 → ★ 除法表达式加括号能否变成整数:a₂ 必在分母、a₁ 必在分子,其余都能挪到分子。约分之后判整除 —— gcd 在这里是化简工具,不是答案
- 40洛谷 P2152 [SDOI2009] SuperGCD解析 → ★★ 高精度 gcd。取模在高精度下太贵,得换成「更相减损 + 提取因子 2」的二进制 gcd。本章第 9 步那条「每两步至少减半」的界,在这里换了一种形式再出现一次
- 41洛谷 P3383 【模板】线性筛素数解析 → 本章那道题的原题。默写 6 行线性筛,那句 break 保证了什么,先说出来再交
- 41洛谷 P1075 [NOIP 2012 普及组] 质因数分解解析 → n ≤ 2×10⁹ 且是两个质数之积 —— 筛不动,只能试除,而且试到 √n 就够。本章第 3 步那句「为什么只要试到 √x」在这儿是唯一的解法来源
- 41洛谷 P1217 [USACO1.5] 回文质数解析 → ★ 上界 10⁸,直接筛会爆内存。正解要反过来:先造回文数再判质数(偶数位的回文数必被 11 整除,可以整段跳过)。练的是「筛不是万能的」
- 41洛谷 P1865 A % B Problem解析 → 筛 + 前缀和:cnt[i] 记 1..i 有几个质数,区间一减就出来。第 6 章那把尺子在这儿原样再用一次。⚠ 越界要输出 Crossing the line
- 41洛谷 P3912 素数个数解析 → ★ n 到 10⁸。本章第 10 步那个实测就是为这道题准备的 —— ⚠ 但那张表量的是 n = 10⁷,到 10⁸ 上「线性筛反而赢 2.27 倍」(95 MB 的表装不进缓存);⇒ 交之前先想清楚你要用哪一种筛,以及为什么
- 42洛谷 P1226 【模板】快速幂||取余运算解析 → ★ 第 12、46 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 第 12 章分治时见过它一次,那时它只是「分治的一个例子」;这一章它是主角。默写五行。⚠ 而这一章列的六个错法,代进这道题的范围之后有三个根本发生不了(含初值那条:它的 p ≥ 2)—— 解析页把每一条都算了一遍
- 42洛谷 P1965 [NOIP 2013 提高组] 转圈游戏解析 → 每轮位移 m,k 轮之后落在 (x + m·10^k) mod n —— 一次快速幂。练的是「把题目翻译成一个幂」这一步
- 42洛谷 P1082 [NOIP 2012 提高组] 同余方程解析 → ★ 求 ax ≡ 1 (mod b) 的最小正整数解,也就是逆元。b 不保证是质数,所以要用 exgcd(第 40 章第 13 步那份)。这道题正好卡在第 40 和第 43 章中间,先做它,第 43 章会顺很多
- 42洛谷 P3390 【模板】矩阵快速幂解析 → ★ 把「乘」换成矩阵乘,五行骨架一个字不用改 —— 这才是快速幂真正的威力:它要的只是结合律。k ≤ 10¹²,正好用上本章第 4 步「次数只和 b 有关」那条
- 42洛谷 P1045 [NOIP 2003 普及组] 麦森数解析 → ★★ 求 2^P−1 的位数和末 500 位。位数用对数算(不是快速幂),末 500 位用高精度快速幂 —— 同一道题里「取模」被换成了「只留末 500 位」,而那五行照样成立
- 43洛谷 P1313 [NOIP 2011 提高组] 计算系数解析 → (ax+by)^k 里 x^n·y^m 的系数 = C(k,n)·a^n·b^m。模数 10007 是质数、k ≤ 1000 < 10007 —— 本章第 6 步那个「p > n」的前提在这里是满足的,可以放心用逆元那套,顺带把第 42 章的快速幂用上
- 43洛谷 P1044 [NOIP 2003 普及组] 栈解析 → ★ 第 1、21 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 卡特兰数 C(2n,n)/(n+1)。第 1 章用递归数过它、第 21 章用 DP 递推过它,这一章给出闭形式 —— 三种做法摆在一起,是整条路线最完整的一次回看。n ≤ 18 不用取模,正好看清楚原始的样子
- 43洛谷 P2822 [NOIP 2016 提高组] 组合数问题解析 → ★ 问 C(i,j) 里有多少个被 k 整除。用第 3 步那份杨辉三角边推边对 k 取模、判 0,再套一层二维前缀和(第 6 章)。⚠ 这道题恰恰不能用逆元那套 —— k 不保证是质数,想清楚为什么
- 43洛谷 P3807 【模板】卢卡斯定理解析 → ★★ 本章第 6 步说「这套公式要求 p > n,p ≤ n 时会全错」,而这道题的 p ≤ 10⁵、n+m 可以更大 —— 它就是那个失效的场。Lucas 把 n 和 m 按 p 进制拆开,每一位都退回到 p > n 的情形。先跑一遍本章的 smallP.cpp 看它是怎么错的,再来读 Lucas 会顺很多
- 44洛谷 P1601 A+B Problem(高精)解析 → 高精度加法模板。⚠ 注意 0 + 0 那组数据 —— 前导零的坑第一次就会撞上
- 44洛谷 P2142 高精度减法解析 → ★ 比加法难:要自己判断 a 和 b 谁大(本章的题面替你保证了 a ≥ b,真题不会),结果为 0 和结果为负都要处理
- 44洛谷 P1303 A*B Problem解析 → 高精度乘法模板。i+j 那一句和结果数组开多长,交之前先自己说一遍
- 44洛谷 P1009 [NOIP 1998 普及组] 阶乘之和解析 → ★ 高精度加法 + 高精度乘低精度。50! 有 65 位 —— 这道题是「什么时候必须上高精度」最经典的例子
- 44洛谷 P1255 数楼梯解析 → ★ 第 1、2、17、21 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★★ 斐波那契 + 高精度:第 2 章那道题的完整版。5000 级楼梯的答案有 1045 位,long long 在第 92 级就崩了(91 级是最后一个装得下的)
- 44洛谷 P1080 [NOIP 2012 提高组] 国王游戏解析 → ★ 第 20 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ⚠ 提高组:贪心(第 19 章的交换论证)+ 高精度乘除。放在这儿是想说明一件事 —— 高精度很少单独考,它总是别的算法的一部分
- 45洛谷 P1115 最大子段和解析 → ★ 第 11、12 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 就是这一章那道题的原题。交之前先想清楚:全是负数那组数据,你的初值挡不挡得住
- 45洛谷 P1719 最大加权矩形解析 → ★ 第 6 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★★ 二维版:枚举上下边界,把每一列压成一个数,就退化成这一章这道题。n ≤ 120 —— 先按第 6 步那张表估一估 O(n³) 行不行
- 45洛谷 P1786 帮贡排序解析 → ★ 数据小得离谱(n ≤ 110),是专门用来练「先看范围再决定写多复杂」的:顶格冒泡也只要 10 微秒,余量九万倍 ⇒ 排序怎么写都能过。⚠ 而它真正的关卡一个都不在算法上,全在读题(谁参加重排 / 并列时按输入顺序 / 名次是 1 基而下标是 0 基 / 职位的高低不是字典序)
- 45洛谷 P1746 离开中山路解析 → ★ 第 14 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ⚠ 1000×1000 的网格 = 10⁶ 个点。按这一章的表估一下就知道:必须 O(n²) 的 BFS,DFS 找最短路会挂(第 14 章)
- 45洛谷 P1996 约瑟夫问题解析 → ★ 第 5 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 第 8 章那道题。这里换个角度看它:n ≤ 100 时怎么写都行,如果 n 是 10⁶ 呢?先估,再决定用不用链表
- 45洛谷 P1177 【模板】排序解析 → ★ 第 10、11、37 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ n ≤ 10⁵ 而且卡了常数:拿它试一次「O(n²) 排序到底能不能过」—— 估算说不能,交一发看看估得准不准
- 46洛谷 P1469 找筷子解析 → ★ 就是这一章那道题的原题。⚠ 数据量大,记得按第 45 章那节加读入优化
- 46洛谷 P1100 高低位交换解析 → ★ 把 32 位数的高 16 位和低 16 位换个位置。两行搞定:(x >> 16) | (x << 16) —— ⚠ 想清楚这里为什么必须用 unsigned
- 46洛谷 P5704 字母转换解析 → 大小写转换其实就是翻转第 5 位('a' 和 'A' 只差 32 = 1 << 5)。一道让你相信「字符也是整数」的小题。⚠ 这一条原来写的是「B2143 转换字母」—— 而洛谷 B2143 是「进制转换」,题号和题名都错了,2026-09-06 订正
- 46洛谷 P1582 倒水解析 → ★★ 答案就是「popcount(n) 怎么降到不超过 k」。这道题是 popcount 和 lowbit 的第一次正式登场
- 46洛谷 P2114 [NOI2014] 起床困难综合症解析 → ⚠ 提高组:每一位互相独立,所以可以一位一位地贪心决定填 0 还是 1。★ 「按位拆开」是位运算最重要的一个套路
- 46洛谷 P1226 【模板】快速幂解析 → ★ 第 12、42 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 第 42 章那道题。现在回去看它的 b & 1 和 b >>= 1,应该一眼就明白了。★ 解析页量了另一件事:第 42 章列的六个错法,有三个被这道题的数据范围挡死了
- 47洛谷 P1308 [NOIP 2011 普及组] 统计单词数解析 → ★ 第 48 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 就是这一章那道题的原题。三个坑一个不少:读入、大小写、整词不是子串
- 47洛谷 P5015 [NOIP 2018 普及组] 标题统计解析 → ★ 数一行里有几个非空格字符。⚠ 坑全在读入上:标题可能以空格开头,也可能是空行 —— 正好练第 2、8 步
- 47洛谷 P1055 [NOIP 2008 普及组] ISBN 号码解析 → 字符转数字(减 '0')、取模、最后一位可能是 X。第 3 步那一节的直接应用
- 47洛谷 P1200 [USACO1.1] 你的飞碟在这儿解析 → 把字母变成数字再连乘取模 —— 「字符就是整数」最直白的一道题
- 47洛谷 P1598 垂直柱状图解析 → ⚠ 要读若干行(含空格)、统计字母、再竖着输出。★ 输出格式是这道题真正的考点,末尾多一个空格就 WA
- 47洛谷 P1071 [NOIP 2009 提高组] 潜伏者解析 → ⚠ 提高组,但用到的只有这一章的东西:字符映射 + 一致性检查。★ 三种「无解」的情况都要判到,是练边界的好题
- 48洛谷 P3375 【模板】KMP解析 → ★ 第 49 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 就是这一章那道题的原题。⚠ 它的下标从 1 开始,next 的输出口径也和本书不同 —— 交之前先把两边的约定对一遍
- 48洛谷 P4391 [BOI2009] Radio Transmission解析 → ★★ 求最小循环节:答案就是 n − nxt[n-1]。一行的题,但想通它等于真的懂了 border
- 48洛谷 P2375 [NOI2014] 动物园解析 → ⚠ 提高组+:把 next 往下再挖一层(不超过一半长度的 border 个数)。★ 它逼你看清 nxt 数组本身就是一棵树
- 48洛谷 P3435 [POI2006] OKR-Periods of Words解析 → ⚠ 提高组:沿着 border 链一路跳到最短的那个。练「nxt[j-1] 一路退」的直觉
- 48洛谷 P1470 [USACO2.3] 最长前缀解析 → 字符串 + DP,不用 KMP 也能过。★ 放在这儿是想说明:不是所有字符串题都要上 KMP
- 48洛谷 P1308 [NOIP 2011 普及组] 统计单词数解析 → ★ 第 47 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 第 47 章那道题。回过头用 KMP 再写一遍,会发现「整词」那个条件 KMP 帮不上忙 —— 该切词还得切词
- 49洛谷 P3370 【模板】字符串哈希解析 → ★ 就是「N 个串里有几个不同的」—— 正好是本章第 8 步那第三笔账(两两比)的现场,单模数在这道题上是真的会被卡
- 49洛谷 P3375 【模板】KMP解析 → ★ 第 48 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 第 48 章那道题。用哈希再写一遍,体会一下「同一道题两条路」
- 49洛谷 P1368 工艺解析 → ⚠ 提高组(★ 2026-09-09 订正:这道题在洛谷现在叫「工艺」,不叫「【模板】最小表示法」了 —— 新模板题是 P13270):哈希不是正解,但拿哈希 + 二分能写出一个好懂的版本,正好练「二分 + 哈希」这个套路
- 49洛谷 P4551 最长异或路径解析 → ★ 第 50 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ⚠ 提高组:它其实是第 50 章 01-Trie 的题。放在这儿是想说明「把东西变成一个数」之后,路还能往哪儿走
- 49洛谷 P1381 单词背诵解析 → 哈希表 + 尺取。★ 这里用的是 unordered_map 那种哈希,和本章的字符串哈希是两件事 —— 分清楚它们
- 49洛谷 P2957 [USACO09OCT] Barn Echoes解析 → 入门难度:求两个串的最长「首尾重叠」。数据很小,正好拿来练手写哈希(也正好说明小数据上什么写法都过)
- 50洛谷 P8306 【模板】字典树解析 → ★ 就是这一章那道题的原题,而且也是多组数据 —— 「多测不清空」这个坑它是真会卡人的
- 50洛谷 P2580 于是他错误的点名开始了解析 → 入门难度:查一个名字有没有出现过、是不是第二次点到。★ 正好练「结尾计数」那一个数
- 50洛谷 P4551 最长异或路径解析 → ★ 第 49 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★★ 01-Trie 的经典题:先把每个点到根的异或和求出来,问题就变成本章那道小题了
- 50洛谷 P10471 最大异或对 The XOR Largest Pair解析 → 就是本章第 11 步那道小题的原题,n 到 10⁵ —— 两两枚举正好过不了
- 50洛谷 P3879 [TJOI2010] 阅读理解解析 → ⚠ 每个单词要记「在哪些文章里出现过」。★ 它逼你想清楚:节点上除了计数,还能挂别的东西
- 50洛谷 P2922 [USACO08DEC] Secret Message G解析 → ⚠ 提高组:两个方向的计数一起用(路过 + 结尾)。★ 本章那两个数在这道题里同时登场
- 51洛谷 P3379 【模板】最近公共祖先(LCA)解析 → ★ 就是这一章那道题的原题(只问 LCA,不问距离)。n 和 q 都到 5×10^5 —— 第 2 步那份暴力正好过不了
- 51洛谷 P5903 【模板】树上 k 级祖先解析 → ★ 第 13 步那一问的原题。⚠ 它卡到了倍增过不去(正解是长链剖分),但拿倍增拿部分分是标准操作
- 51洛谷 P1967 [NOIP 2013 提高组] 货车运输解析 → ★★ 最大生成树 + 树上路径最小边权 —— 第 34 章和第 13 步那半节的合体,倍增在这道题里是主角
- 51洛谷 P2420 让我们异或吧解析 → 树上路径异或和:先求出每个点到根的异或和,答案就是 x[u] ^ x[v] —— ★ 连 LCA 都不用,因为异或自己抵消。练「先想清楚要不要 LCA」
- 51洛谷 P3128 [USACO15DEC] Max Flow P解析 → ★ 第 52 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ⚠ 提高组:树上差分 + LCA。★ 这是 LCA 最常见的第二个用法 —— 而树上差分正是[第 52 章](/ch/52-tree-diff/),这道题就是那一章正文那道题的原题
- 51洛谷 P1395 会议解析 → 入门难度的树上题(求树的重心),不需要 LCA。★ 放在这儿是想说明:不是每道树上题都要上倍增
- 52洛谷 P3128 [USACO15DEC] Max Flow P解析 → ★ 第 51 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 就是这一章那道题的原题(只问最大值)。第 51 章的练习题里点过这个洞,现在可以做了
- 52洛谷 P3258 [JLOI2014] 松鼠的新家解析 → ★★ 点差分的经典题,但有个坑:相邻两段的接头处会被算两次,要减掉 —— ⚠ 读题时先想清楚「每个点被访问几次」到底怎么定义
- 52洛谷 P2680 [NOIP 2015 提高组] 运输计划解析 → ★ 第 53 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ⚠ 难题:二分答案(第 9 章)+ 边差分(本章)+ LCA(第 51 章)三合一。★ 它是「边差分」最标准的出场
- 52洛谷 P3178 [HAOI2015] 树上操作解析 → ★ 第 53 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ⚠ 边改边问 —— ★ 放在这儿是为了让你亲眼看到本章这套为什么不够用(差分只能还原一次)。⚠⚠ 这条注解原来还写着「正解是树链剖分」,解析页量完之后订正了:这道题只问「根到 x」⇒ DFS 序 + 两棵树状数组就够,快 3.3 倍、短一半
- 52洛谷 P1352 没有上司的舞会解析 → ★ 第 27 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 第 27 章树形 DP 的原题。★ 放在这儿是想说明:不是每道树上题都要差分或倍增
- 52洛谷 P1966 火柴排队解析 → ★ 第 11 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 和树无关,考的是「离散化 + 逆序对」。★ 拿它复习第 6 章那一对逆运算的思路:先想清楚要求的到底是什么
- 53洛谷 P3384 【模板】重链剖分解析 → 本章原题。★ 必须一次写对:四种操作、取模、非递归两趟
- 53洛谷 P3178 [HAOI2015] 树上操作解析 → ★ 第 52 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ★ 第 52 章故意放进题单的那道「做不了的题」,现在可以做了(见第 13 步)
- 53洛谷 P2590 [ZJOI2008] 树的统计解析 → ★ 换一种线段树:路径求和 + 路径求最大值。剖分那一半一个字不用改
- 53洛谷 P4315 月下“毛景树”解析 → ⚠ 边权版 + 区间赋值 —— 第 12 步那一小节的正式出场
- 53洛谷 P2680 [NOIP 2015 提高组] 运输计划解析 → ★ 第 52 章也用这道题 —— 再遇到时换新方法重做,别抄上次的 ⚠ 难题。★ 它的正解是二分答案 + 边差分(第 9、52 章),不是这一章 —— 放在这儿是想说明:会了剖分不等于什么都该拿剖分做