13538 字
35 分鐘
综合训练 对拍 面试表达
第 12 章 综合训练、对拍与面试表达
本章目标:把算法知识转化为稳定输出能力,包括训练节奏、错题复盘、随机对拍和面试讲解。
12.1 学习目标
- 建立专题训练和套题训练的节奏。
- 掌握错题复盘模板。
- 掌握随机数据生成与对拍。
- 能在面试中清楚表达算法思路。
- 能维护自己的模板库。
12.2 训练节奏
算法训练分两类:
- 专题训练:集中突破某个知识点。
- 套题训练:练习时间分配和综合判断。
建议比例:
| 阶段 | 专题训练 | 套题训练 |
|---|---|---|
| 入门 | 80% | 20% |
| 提高 | 60% | 40% |
| 竞赛/面试前 | 40% | 60% |
12.3 错题复盘
错题不是“题解收藏夹”,而是定位弱点的工具。
复盘模板:
题目:标签:数据范围:暴力解:优化关键:正确性证明:复杂度:错误原因:反例:可复用模板:下次识别信号:重点写“下次怎么识别”,否则下次还会错。
12.4 随机对拍
对拍思想:
- 写一个暴力解 brute,保证正确但慢。
- 写一个优化解 solve。
- 随机生成小数据。
- 比较两个输出。
- 输出不同就保存测试点。
伪代码:
for seed in range(10000): data = gen(seed) ans1 = brute(data) ans2 = solve(data) if ans1 != ans2: print(seed, data, ans1, ans2) break对拍适合:
- 贪心题。
- DP 优化题。
- 复杂数据结构题。
- 边界很多的模拟题。
12.5 面试表达结构
回答算法题时建议顺序:
- 复述题意,确认输入输出。
- 给出暴力解和复杂度。
- 指出瓶颈。
- 说明优化观察。
- 给出算法步骤。
- 证明正确性。
- 分析复杂度。
- 讨论边界。
- 写代码。
- 自测样例。
不要一上来就写代码。面试官更关心你如何思考。
12.6 模板库维护
模板库原则:
- 每个模板短小、独立、可运行。
- 每个模板配一个最小测试。
- 命名统一。
- 注释解释不变量,不解释语法。
- 定期删除自己已经不信任的模板。
建议分类:
basic/graph/dp/string/math/data_structure/stress_test/12.7 常见综合题拆解
综合题通常不是“新算法”,而是多个模块组合。
拆解顺序:
- 是否能暴力枚举?
- 哪一步最慢?
- 是否有单调性?
- 是否有重复子问题?
- 是否能排序后贪心?
- 是否能建图?
- 是否需要维护动态区间信息?
12.8 代码检查清单
- 输入输出格式正确。
- 数组大小足够。
- long long 使用正确。
- 初值是无穷大还是 0。
- 下标从 0 还是 1 开始。
- 图边是否双向。
- 多组数据是否清空全局变量。
- 递归深度是否可能爆栈。
- 是否覆盖空、单元素、重复、极值样例。
12.9 练习
- 给一个贪心题写随机对拍。
- 给自己的 Dijkstra 模板配最小测试。
- 选 5 道错题,用复盘模板重写笔记。
- 把一道 DP 题按面试表达结构讲出来。
- 整理一个个人算法模板目录。
ACM/OI 扩展:竞赛训练体系与模板工程
本节补充 OIer 和 ACMer 常用的算法套路、模板、复杂度分析和易错点。 写模板时默认使用 C++17,变量名尽量短,但注释要说明不变量和适用条件。
1. OI/ACM 个人模板目录
模板不是越多越好,而是要熟、短、可测。
template/├── graph/│ ├── dijkstra.cpp│ ├── dinic.cpp│ └── scc_tarjan.cpp├── data_structure/│ ├── bit.cpp│ ├── segtree.cpp│ └── dsu_rollback.cpp├── string/│ ├── kmp.cpp│ └── ac_automaton.cpp├── math/│ ├── qpow_exgcd.cpp│ └── comb.cpp└── stress/ └── checker.py要点:
- 每个模板单独可编译。
- 每个模板配最小样例。
- 题前只复习自己真正写过的模板。
2. 对拍工程化
对拍不仅是脚本,还包括数据生成策略和反例归档。
for (int tc = 1; tc <= 10000; ++tc) { auto data = gen(tc); auto a = brute(data); auto b = solve(data); if (a != b) { cerr << "Wrong on seed " << tc << "\n"; print(data); cerr << a << " " << b << "\n"; break; }}要点:
- 先手写 5 个极端样例。
- 随机数据从小范围开始。
- 反例应保存到
tests/fail_001.in。 - 修复后把反例加入回归测试。
3. 赛时策略
ACM/OI 现场要管理时间。
| 时间 | 行动 |
|---|---|
| 前 10 分钟 | 通读题面,按难度和熟悉度排序 |
| 10~40 分钟 | 先拿签到题和模板题 |
| 中段 | 并行推进可做题,记录卡点 |
| 后段 | 查错、补边界、冲刺部分分 |
要点:
- 不要在单题无进展时死磕太久。
- 先写能过小数据的版本有助于理解。
4. 题解写作模板
写题解能反向训练表达和证明。
## 思路先写暴力,再写优化观察。
## 正确性证明说明不变量或贪心交换理由。
## 复杂度时间复杂度:...空间复杂度:...
## 代码贴最终代码。
## 易错点列出边界和实现坑。要点:
- 题解不是代码注释,要解释为什么。
- 复杂度必须包含预处理。
5. 面试与竞赛表达差异
面试重过程,竞赛重结果,但底层能力一致。
要点:
- 面试要先讲暴力和优化,不要沉默写代码。
- 竞赛提交前要自测边界。
- 面试代码可读性优先,竞赛代码稳定性优先。
训练题型:
- 把一道 DP 题讲给同学听。
- 把一道图论题写成正式题解。
本章模板背诵清单
- 能在 5 分钟内写出本章第一个核心模板。
- 能说出每个模板的时间复杂度和空间复杂度。
- 能说明模板不适用的反例。
- 能为模板构造 3 个边界样例。
- 能把模板改成 0-index 或 1-index 版本。
专题训练路线与题单设计
OIer 常见专题路线
基础语法 -> 基础数据结构 -> 搜索 -> DP -> 图论 -> 数学 -> 高级结构 -> 综合套题。
- 每个专题至少保留 3 道模板题。
- 每个专题至少保留 2 道易错题。
- 每个专题至少写 1 篇复盘。
ACMer 团队训练分工
三人队要形成阅读、编码、查错的协作节奏。
- 签到题快速确定一人写。
- 模板题由最熟的人写,其他人读题。
- 复杂题先白板讨论模型。
- 提交失败后换人看代码。
错题标签体系
标签要能帮助下次识别,而不是只写“DP”。
- 错误标签:边界、溢出、初始化、建图、证明错误、复杂度误判。
- 模型标签:树形 DP、差分约束、整体二分、反悔贪心。
- 实现标签:lazy、离散化、取模、递归栈。
赛后补题流程
补题不是看懂题解就结束。
- 先不看代码,只看思路。
- 自己重写一遍。
- 隔 3 天再重做。
- 把关键转化写进错题本。
模板熟练度标准
真正掌握模板的标准是能改。
- 能改边权类型。
- 能改 0-index/1-index。
- 能加路径恢复。
- 能处理多组数据。
- 能写出最小反例。
高频模板训练卡
这一组训练卡用于把“12_综合训练_对拍_面试表达”转化为赛场识别能力。每张卡都包含题目信号、模板选择、复杂度、反例和实现检查。
卡 1:随机对拍
- 题目信号:训练、比赛或面试中需要 随机对拍。
- 优先模板:采用 随机对拍 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 随机对拍 应用到一道最近做错的题上。
卡 2:暴力解设计
- 题目信号:训练、比赛或面试中需要 暴力解设计。
- 优先模板:采用 暴力解设计 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 暴力解设计 应用到一道最近做错的题上。
卡 3:数据生成器
- 题目信号:训练、比赛或面试中需要 数据生成器。
- 优先模板:采用 数据生成器 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 数据生成器 应用到一道最近做错的题上。
卡 4:Special Judge
- 题目信号:训练、比赛或面试中需要 Special Judge。
- 优先模板:采用 Special Judge 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 Special Judge 应用到一道最近做错的题上。
卡 5:模板库维护
- 题目信号:训练、比赛或面试中需要 模板库维护。
- 优先模板:采用 模板库维护 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 模板库维护 应用到一道最近做错的题上。
卡 6:题解写作
- 题目信号:训练、比赛或面试中需要 题解写作。
- 优先模板:采用 题解写作 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 题解写作 应用到一道最近做错的题上。
卡 7:赛时分工
- 题目信号:训练、比赛或面试中需要 赛时分工。
- 优先模板:采用 赛时分工 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 赛时分工 应用到一道最近做错的题上。
卡 8:复杂度口述
- 题目信号:训练、比赛或面试中需要 复杂度口述。
- 优先模板:采用 复杂度口述 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 复杂度口述 应用到一道最近做错的题上。
卡 9:边界检查
- 题目信号:训练、比赛或面试中需要 边界检查。
- 优先模板:采用 边界检查 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 边界检查 应用到一道最近做错的题上。
卡 10:错题标签
- 题目信号:训练、比赛或面试中需要 错题标签。
- 优先模板:采用 错题标签 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 错题标签 应用到一道最近做错的题上。
卡 11:补题流程
- 题目信号:训练、比赛或面试中需要 补题流程。
- 优先模板:采用 补题流程 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 补题流程 应用到一道最近做错的题上。
卡 12:回归测试
- 题目信号:训练、比赛或面试中需要 回归测试。
- 优先模板:采用 回归测试 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 回归测试 应用到一道最近做错的题上。
卡 13:样例最小化
- 题目信号:训练、比赛或面试中需要 样例最小化。
- 优先模板:采用 样例最小化 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 样例最小化 应用到一道最近做错的题上。
卡 14:断言调试
- 题目信号:训练、比赛或面试中需要 断言调试。
- 优先模板:采用 断言调试 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 断言调试 应用到一道最近做错的题上。
卡 15:日志调试
- 题目信号:训练、比赛或面试中需要 日志调试。
- 优先模板:采用 日志调试 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 日志调试 应用到一道最近做错的题上。
卡 16:代码审查
- 题目信号:训练、比赛或面试中需要 代码审查。
- 优先模板:采用 代码审查 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 代码审查 应用到一道最近做错的题上。
卡 17:面试讲解
- 题目信号:训练、比赛或面试中需要 面试讲解。
- 优先模板:采用 面试讲解 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 面试讲解 应用到一道最近做错的题上。
卡 18:白板伪代码
- 题目信号:训练、比赛或面试中需要 白板伪代码。
- 优先模板:采用 白板伪代码 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 白板伪代码 应用到一道最近做错的题上。
卡 19:部分分策略
- 题目信号:训练、比赛或面试中需要 部分分策略。
- 优先模板:采用 部分分策略 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 部分分策略 应用到一道最近做错的题上。
卡 20:赛后复盘
- 题目信号:训练、比赛或面试中需要 赛后复盘。
- 优先模板:采用 赛后复盘 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 赛后复盘 应用到一道最近做错的题上。
卡 21:模板默写
- 题目信号:训练、比赛或面试中需要 模板默写。
- 优先模板:采用 模板默写 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 模板默写 应用到一道最近做错的题上。
卡 22:专题题单
- 题目信号:训练、比赛或面试中需要 专题题单。
- 优先模板:采用 专题题单 流程。
- 核心不变量:每次训练都能留下可复用资产:反例、模板、题解或复盘。
- 复杂度目标:训练流程本身不看时间复杂度,但要降低定位错误的时间成本。
- 不适用场景:临场时间极少时不要搭复杂工具,先手测关键边界。
- 实现检查:检查输入保存、随机种子、暴力正确性、输出格式。
- 边界样例:最小反例、极限数据、随机重复、无解数据。
- 训练题型:把 专题题单 应用到一道最近做错的题上。
本章赛前默写任务
- 默写 随机对拍 的模板,并写出 训练流程本身不看时间复杂度,但要降低定位错误的时间成本。。
- 默写 暴力解设计 的模板,并写出 训练流程本身不看时间复杂度,但要降低定位错误的时间成本。。
- 默写 数据生成器 的模板,并写出 训练流程本身不看时间复杂度,但要降低定位错误的时间成本。。
- 默写 Special Judge 的模板,并写出 训练流程本身不看时间复杂度,但要降低定位错误的时间成本。。
- 默写 模板库维护 的模板,并写出 训练流程本身不看时间复杂度,但要降低定位错误的时间成本。。
- 默写 题解写作 的模板,并写出 训练流程本身不看时间复杂度,但要降低定位错误的时间成本。。
- 默写 赛时分工 的模板,并写出 训练流程本身不看时间复杂度,但要降低定位错误的时间成本。。
- 默写 复杂度口述 的模板,并写出 训练流程本身不看时间复杂度,但要降低定位错误的时间成本。。
- 默写 边界检查 的模板,并写出 训练流程本身不看时间复杂度,但要降低定位错误的时间成本。。
- 默写 错题标签 的模板,并写出 训练流程本身不看时间复杂度,但要降低定位错误的时间成本。。
- 为本章任选 3 个模板各写一个最小输入。
- 为本章任选 3 个模板各写一个会使错误实现失败的反例。
- 把本章所有模板整理到个人代码库,并标注 0-index / 1-index。
12_综合训练_对拍_面试表达:详细训练清单
本清单用于把章节知识拆成可执行的小任务,偏 OI/ACM 赛场使用。
训练点 1:随机对拍
- 识别信号:题面出现与“随机对拍”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“随机对拍”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 2:暴力解
- 识别信号:题面出现与“暴力解”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“暴力解”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 3:数据生成器
- 识别信号:题面出现与“数据生成器”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“数据生成器”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 4:反例最小化
- 识别信号:题面出现与“反例最小化”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“反例最小化”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 5:Special Judge
- 识别信号:题面出现与“Special Judge”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“Special Judge”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 6:模板库
- 识别信号:题面出现与“模板库”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“模板库”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 7:题解写作
- 识别信号:题面出现与“题解写作”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“题解写作”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 8:赛时分工
- 识别信号:题面出现与“赛时分工”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“赛时分工”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 9:复杂度口述
- 识别信号:题面出现与“复杂度口述”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“复杂度口述”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 10:边界检查
- 识别信号:题面出现与“边界检查”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“边界检查”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 11:错题标签
- 识别信号:题面出现与“错题标签”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“错题标签”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 12:补题流程
- 识别信号:题面出现与“补题流程”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“补题流程”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 13:回归测试
- 识别信号:题面出现与“回归测试”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“回归测试”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 14:断言调试
- 识别信号:题面出现与“断言调试”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“断言调试”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 15:日志调试
- 识别信号:题面出现与“日志调试”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“日志调试”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 16:面试讲解
- 识别信号:题面出现与“面试讲解”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“面试讲解”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 17:部分分策略
- 识别信号:题面出现与“部分分策略”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“部分分策略”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 18:赛后复盘
- 识别信号:题面出现与“赛后复盘”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“赛后复盘”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 19:随机对拍
- 识别信号:题面出现与“随机对拍”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“随机对拍”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 20:暴力解
- 识别信号:题面出现与“暴力解”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“暴力解”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 21:数据生成器
- 识别信号:题面出现与“数据生成器”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“数据生成器”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 22:反例最小化
- 识别信号:题面出现与“反例最小化”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“反例最小化”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 23:Special Judge
- 识别信号:题面出现与“Special Judge”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“Special Judge”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
训练点 24:模板库
- 识别信号:题面出现与“模板库”相关的限制、操作或查询时,先判断能否套用本章模型。
- 建模步骤:写出输入对象、维护状态、允许操作、目标答案,再决定使用暴力、模板或优化。
- 模板要求:能默写核心代码,并说明变量含义、初始化方式和循环边界。
- 复杂度要求:写出预处理、单次操作、总复杂度,并确认能通过最大数据范围。
- 反例检查:构造最小规模、全相等、极端值、重复值、无解或刚好可行的样例。
- 复盘要求:若做错,记录错因是建模、证明、复杂度、边界、溢出还是模板不熟。
- 扩展任务:把“模板库”与至少一个其他专题组合,例如二分、图论、DP、数据结构或数学。
分享
如果這篇文章對你有幫助,歡迎分享給更多人!
部分資訊可能已經過時
相關文章 智能推薦





















