OI 训练指南Informatics Olympiad

资源清单

少而准:四个题源、四份资料、一条工具链

到了这个水平,问题从来不是「找不到资源」,而是资源太多。这里只留真正会反复打开的东西, 并且写清楚每个该用来干什么——收藏一百个链接和收藏零个的效果是一样的。

题源

四个题源,各有分工

洛谷

中文题目最全,有难度分级与现成题单。打专题时首选:按标签筛选,从模板题一路做到提高+ 的变式题。

  • 题单
  • 难度分级
  • 比赛

Codeforces

强在思维与构造。这个水平最该刷的是 Div.2 的 C–E,赛后 Editorial 讲「为什么想到」讲得比多数中文题解清楚。

  • Div.2 C–E
  • Editorial
  • Rating

AtCoder

ABC 的 D–F 与 ARC,题风干净、难度曲线平缓。适合用来建立稳定的做题节奏,也适合当模拟赛补充。

  • ABC D–F
  • ARC
  • 每周一场

LibreOJ

省选与 NOI 原题集中,配套题解质量高。用来拉上限:当提高题已经稳定能过,就该来这里找难受。

  • 省选原题
  • NOI 题单
  • 拉上限

补充:OI Wiki 查实现细节; 近年 CSP-S / NOIP / 省选真题建议按年份成套做,成套做才能暴露「时间分配」问题。

选题

同一个人,选题方式换了,效率差好几倍

01

卡在 40–60% 通过率

独立思考后能做出,或者至少能写出暴力。太简单浪费时间,太难只收获挫败感。

02

一个专题连续两周

每天换标签,等于每天重新热身。集中火力把一个模型的所有变式打完,再换下一个。

03

真题成套做

成套才有时长与顺序的压力。单题刷是练算法,成套做才是练比赛。

资料

资料只留四份,各管一段

主干

《算法竞赛进阶指南》

李煜东,常被称作「蓝书」。省选层面的主干内容基本都在里面,讲解紧凑,适合当工具书按专题查。 读法是「读一章、做掉那一章的题」,不要当小说看。

查询

OI Wiki

查实现细节与边界条件最快的中文来源:复杂度、写法的坑、板子。注意它是百科,不是题单, 别从头读到尾。

思路

Codeforces Editorial 与题解区

看题解要看的是「从题面到模型的那一步是怎么想到的」,而不是把代码抄下来。 只抄代码的人,一周后就忘干净了。

深挖

集训队论文与国家集训队作业

省队方向的专题深挖资料,按需挑着读。一个专题读一篇就够,读多篇容易陷入「看了很多,一道都不会写」。

工具

本地工具链:编译、查错、对拍

这个水平的失分,一半来自「写挂了但本地没发现」。这三件事能把它压到很低。

三条命令

正式评测用优化编译;本地查错误用 sanitizer,它能直接定位越界与未定义行为,比 printf 快得多。

# 1. 按评测机的参数编译
g++ -O2 -std=c++17 -Wall -Wextra -o solve solve.cpp

# 2. 本地查越界 / 溢出(慢 3–5 倍,只在小数据上用)
g++ -g -O1 -fsanitize=address,undefined -o dbg solve.cpp

# 3. Windows 下 300 组随机对拍
for /l %i in (1,1,300) do (
  gen.exe %i > in.txt
  brute.exe < in.txt > a.txt
  solve.exe < in.txt > b.txt
  fc a.txt b.txt || (echo WA at %i & pause)
)

值得花半小时配好的东西

  • 生成器带随机种子:gen seed,便于复现出错的那一组
  • 小数据暴力:n ≤ 10 的纯暴力,是验证正解的唯一手段
  • 计时:time ./solve 或 Measure-Command,别凭感觉判断超时
  • 自己的模板库:标准是「5 分钟能默写」,不是「收藏得全」
  • 固定目录结构:solve.cpp / brute.cpp / gen.cpp / in.txt,省掉每次搭环境的时间

常见问题

这个阶段最常被问的六个问题

我 CSP-J 二等,离省一还有多远?

没法用时间回答,但可以用三个判据:能不能独立做出提高+ 的题、模拟赛能否稳定 200+(300 分制)、 能不能说清自己的失分结构。三条都成立时,你就在省一线上了。

模拟赛分数几个月不动怎么办?

先查三件事:难度是不是一直在 70% 以上(太简单)、复盘是不是只停留在看题解、最近两周是不是只做了同一类题。 三条里通常有一条中了。

一天该刷多少题?

2–3 道,且每道都复盘,优于 6 道只看题解。题量是结果不是目标;真正的指标是「独立写出」的比例。

某个专题实在学不会,能放弃吗?

第二档尽量别放弃,它们是省一的地基;第三档可以按出现频率取舍,比如计算几何可以最后再碰。

现在要不要学网络流、多项式?

冲省一不必,冲省队必学。但先确认第二档没有漏洞——地基不稳时学高阶专题,学完也用不上。

文化课怎么平衡?

竞赛决定上限,文化课守住下限。用固定时段而不是「状态好再学」来安排,是能长期坚持下去的唯一办法。

到这里就可以开始了

挑一道卡在 40% 通过率的题,限时写完,然后认真复盘。剩下的路,都是这一步的重复。