模型识别
题面里不会写「这题用线段树」。同样一句「区间修改、区间查询」,可能是差分、可能是树状数组、也可能是带懒标记的线段树, 取决于数据范围与操作类型。练法:每做完一道题,回写一句「题面里的哪句话提示了这个模型」。
- 题面 → 模型
- 数据范围 → 做法
01 · 定位
标签不重要,重要的是「独立、限时、不查题解」时的完成率。下表是常见水平的大致对照, 用来决定你该练什么难度的题,而不是用来贴标签。
| 所在档位 | 大致能做 | 典型卡点 |
|---|---|---|
| CSP-J 二等 | 模拟、枚举、二分、前缀和、简单 DP 与 BFS 都能独立写;普及- 到普及/提高- 的常规题做得动 | 提高组的题读完不知道归类;不会写部分分,一没思路就是 0 分 |
| CSP-S 一等 | 提高- / 提高 的多数题会用模板做出来,图论与数据结构的基本套路熟 | 变式题没思路;限时下低级错误多,简单题也会翻车 |
| NOIP 省一 | 提高+ / 省选- 的题能做出大半,会写暴力保底 | 专题深度不够,复杂建模吃力,常数与实现细节吃亏 |
| 省队候选 | 省选原题能稳定拿部分分,模板熟练到能背写 | 思维题的质量、时间分配、三小时内的稳定性 |
一句话自测:拿一套去年的 CSP-S 第二轮原题,限时 3 小时、不查题解、不搜资料,看你实际能拿多少分。 这个分数比任何标签都准——它同时反映了你的模型覆盖面、实现能力和稳定性。
02 · 瓶颈
它们都不是「多学几个算法」能解决的,所以才会有人刷了几百道题,分数还是原地不动。
题面里不会写「这题用线段树」。同样一句「区间修改、区间查询」,可能是差分、可能是树状数组、也可能是带懒标记的线段树, 取决于数据范围与操作类型。练法:每做完一道题,回写一句「题面里的哪句话提示了这个模型」。
一道好题常有四五种做法,只有一种能过。要求你能从 n ≤ 5×10⁴ 条件反射出 O(n√n) 或 O(n log²n),
再映射到具体结构。这比会写模板重要得多。
会做不等于拿到分。读题漏条件、数组开小、int 溢出、不写暴力、时间分配失控——每一项都在扣分,
而且扣得比难题失分更冤。
03 · 关卡
同样是「考算法」,四个阶段的失分方式完全不同。知道自己现在卡在哪一关,比盲目刷题有效。
第一轮筛选基础概念与代码阅读,第二轮才是上机。这一关主要筛「基础模型是否熟练、写得是否稳定」,题目难度跨度大,部分分给得慷慨——不会做也要把暴力写上去。
3 题 3.5 小时。「CSP-S 一等」与「能拿省一」的区别,往往不在最后一题,而在前面简单题一分不丢、以及第三题拿到 40 分暴力。
名额有限,题面开始考建模与专题深度:DP 优化、树上问题、综合数据结构、构造与思维题都会出现。这一层开始明显吃「见得多 + 想得深」。
两天三题,题量大、部分分设计精细。赛场上「会不会按子任务拿分」直接决定名次,很多人的正解写不完,就是靠分档暴力进的国家集训队。
时间与赛制以官方通知为准:中国计算机学会 CCF
04 · 方法
任何有效的训练计划都可以拆成这三块。差别只在比例和质量。
连续 2–4 周只做同一个标签的题:从模板题到变式题再到省选原题。集中火力的效率,远高于每天随机刷几道。 结束时写一份题单总结:模型长什么样、常见变形、坑在哪。
3 小时、不查资料、不看题解、中途不换题,按真实赛制提交。模拟赛的价值不在分数, 而在暴露「限时下会犯什么错」——这在平时刷题里永远看不到。
模型、卡点(卡在哪一步)、应得分数、重做记录。不写「粗心」,要写到「二分边界写成 mid 而非 mid+1」这种粒度, 否则下次还犯。
时间配比建议:专题 60% · 模拟与复盘 30% · 模板与工具 10%。 只刷专题会不稳,只打模拟不涨水平,二者必须同时进行。
05 · 误区
舒适区刷题是最常见的时间黑洞:题量上去了,分数不动。难度要卡在独立思考后 40–60% 的通过率, 低于 30% 的题先放,高于 70% 的题不用反复做。
OI 赛制按测试点给分,暴力是从 0 分变 30 分的唯一办法,也是验证正解正确性的工具。 先写暴力、再优化,几乎是所有高分选手的固定动作。
看懂不等于会写。至少隔一天,关掉题解、不看旧代码再写一遍;写不出来,说明这一步并没有真正掌握。
模板救不了不会建模,别人的训练量也不是你的计划。真正能抄的是方法:怎么选题、怎么复盘、怎么分配考场时间。