NOI 历年真题题单
整理 2016 年起全国青少年信息学奥林匹克竞赛(NOI)正赛真题,按年份与试次排列,附前置训练方向。
NOI 历年真题题单
本题单整理全国青少年信息学奥林匹克竞赛(NOI)正赛真题,目前收录 2016 到 2026 年,每年 6 题(2019 年 7 题,含加强版),共 67 题。
收录口径
- 只收录 NOI 正赛(含冬令营之外的正式比赛日)题目,不含
NOI Online、NOI 嘉年华等周边赛事。 - 每年两试,每试 3 题,标注为
D1T1–D2T3或按洛谷题号顺序。 - 不含
NOIP(现 CSP-S)——那是省选的前置认证,另有CSP-S 历年真题题单。 - 难度按洛谷现行 8 档体系:
提高+= 提高+/省选-,省选= 省选/NOI-,NOI= NOI/NOI+/CTS。
这份题单的定位
NOI 正赛难度显著高于省选,绝大多数题目标注为 省选 或 NOI 档。它不是用来"刷完"的,用途有三个:
- 看风格:NOI 爱考什么、怎么设置部分分、题面长什么样。
- 练部分分:NOI 每题都有明确子任务,暴力分往往能拿 30–60 分,这部分是必须练的。
- 定上限:知道自己离省队线还差多远。
建议先做省选真题(统一省选历年真题题单),省选稳定进省队之后再来做本题单。
使用建议
text
第一遍:只看题面 + 想 20 分钟,写出部分分策略,不看代码
第二遍:实现部分分,拿真实得分
第三遍:读正解,补算法点不要一开始就冲正解。NOI 的评分是子任务制,部分分策略本身就是考点。
目录
NOI2016
- luogu P1117洛谷原题· 优秀的拆分
- 难度:省选
- 训练目的:字符串计数。求所有「AABB 形式」的拆分方案数,练后缀数组 + 调和级数枚举。
- luogu P1173洛谷原题· 网格
- 难度:省选
- 训练目的:网格图连通性判定。蛐蛐是障碍,判断能否用最少改动让跳蚤不连通,练平面图割与特判。
- luogu P1587洛谷原题· 循环之美
- 难度:NOI
- 训练目的:数论反演。纯循环小数计数,练莫比乌斯反演 + 杜教筛。
- · 区间
- 难度:提高
- 训练目的:双指针 + 线段树。选 m 个区间使它们有公共点且极差最小,练「按长度排序后滑动窗口 + 覆盖次数最大值」。
- luogu P1721洛谷原题· 国王饮水记
- 难度:NOI
- 训练目的:贪心 + 凸优化。水位合并的收益最大化,练「按大小排序后合并相邻段」的结论推导。
- luogu P1737洛谷原题· 旷野大计算
- 难度:NOI
- 训练目的:构造题。用有限种基本操作拼出目标函数,练「把运算拆成允许的原语」的构造思维。
NOI2017
- luogu P3822洛谷原题· 整数
- 难度:省选
- 训练目的:二进制高精度 + 位运算。支持大数加减与单点查询,练「压位 + 懒标记」或线段树维护进位。
- · 蚯蚓排队
- 难度:省选
- 训练目的:链表 + 哈希。维护若干序列并统计子串出现次数,练「长度受限时只哈希短串」的关键观察。
- luogu P3824洛谷原题· 泳池
- 难度:NOI
- 训练目的:DP + 线性递推。矩形安全区域计数,练「按最小不安全位置划分」的 DP 设计。
- · 游戏
- 难度:提高+
- 训练目的:2-SAT。地图限制赛车类型,d 很小可以枚举,练「小范围枚举 + 2-SAT 判定」。
- luogu P3826洛谷原题· 蔬菜
- 难度:NOI
- 训练目的:费用流 / 贪心 + 并查集。蔬菜按天变质,练「倒序处理 + 可撤销贪心」。
- luogu P3827洛谷原题· 分身术
- 难度:NOI
- 训练目的:动态凸包。删点后剩余点的凸包面积,练「离线倒序加点」或「分块重建」。
NOI2018
- luogu P4768洛谷原题· 归程
- 难度:提高+
- 训练目的:Kruskal 重构树 + 最短路。按海拔建重构树后查询子树最小值,练「边权阈值 → 树上子树」的经典转化。
- luogu P4769洛谷原题· 冒泡排序
- 难度:NOI
- 训练目的:排列与逆序对。求冒泡排序交换次数的期望或计数,练「逆序对 ↔ 排列统计」的组合推导。
- luogu P4770洛谷原题· 你的名字
- 难度:NOI
- 训练目的:后缀自动机 + 线段树合并。多串的公共子串去重计数,练 SAM 上的 endpos 维护。
- luogu P4774洛谷原题· 屠龙勇士
- 难度:提高+
- 训练目的:扩展中国剩余定理(excrt)。血量与恢复量构成同余方程组,练 excrt 与无解判定。
- luogu P4775洛谷原题· 情报中心
- 难度:NOI
- 训练目的:树上路径交 + 数据结构。多条路径的公共部分统计,练「路径交 = LCA 相关量」的推导。
- luogu P4776洛谷原题· 多边形
- 难度:NOI
- 训练目的:树上 DP + 计数。虽然名字叫多边形,实际是树上结构计数,练「子树信息合并 + 容斥」。
NOI2019
- luogu P5468洛谷原题· 回家路线
- 难度:省选
- 训练目的:DP + 斜率优化。按列车时间转移,练「时间轴上的 DP + 凸包维护」。
- · 回家路线 加强版
- 难度:省选
- 训练目的:同上题的加强数据,需要在斜率优化基础上处理更多细节,建议做完 P5468 再挑战。
- luogu P5469洛谷原题· 机器人
- 难度:NOI
- 训练目的:区间 DP + 笛卡尔树。柱子上机器人移动,练「按最大值分治」的区间 DP 优化。
- luogu P5470洛谷原题· 序列
- 难度:NOI
- 训练目的:贪心 + 可撤销堆。选下标使两序列各取 k 个且至少 l 个重合,练「反悔贪心」。
- luogu P5471洛谷原题· 弹跳
- 难度:省选
- 训练目的:KD-Tree 或线段树套线段树优化建图。矩形范围连边跑最短路,练「范围连边 → 数据结构优化」。
- luogu P5472洛谷原题· 斗主地
- 难度:NOI
- 训练目的:洗牌过程的概率建模。多次洗牌后牌的位置分布,练「线性变换的期望传递」。
- luogu P5473洛谷原题· I 君的探险
- 难度:NOI
- 训练目的:交互题。通过有限次查询还原图结构,练信息量与二分构造。
NOI2020
- · 美食家
- 难度:提高+
- 训练目的:矩阵快速幂 + 分段。城市愉悦值随时间衰减,练「按美食节分段做矩阵加速 DP」。
- luogu P6773洛谷原题· 命运
- 难度:省选
- 训练目的:树上 DP + 线段树合并。时间树的路径约束计数,练「子树信息合并 + 懒标记」。
- luogu P6774洛谷原题· 时代的眼泪
- 难度:NOI
- 训练目的:二维数点 + 分块。矩形内点的统计,练「二维偏序 + 分块平衡复杂度」。
- luogu P6775洛谷原题· 制作菜品
- 难度:NOI
- 训练目的:构造 + 图论建模。原材料分配成菜,练「把配额约束建成图上的欧拉/度数问题」。
- luogu P6776洛谷原题· 超现实树
- 难度:NOI
- 训练目的:二叉树结构归纳。判断一棵树能否由给定集合生成,练「结构递归 + 同构判定」。
- luogu P6777洛谷原题· 翻修道路
- 难度:NOI
- 训练目的:图论结构分析。道路满足特殊环路条件,练「从特殊性质推出图的结构」再计数。
NOI2021
- luogu P7735洛谷原题· 轻重边
- 难度:省选
- 训练目的:树链剖分 + 边权维护。路径上「重边」数量统计,练「边权转点权 + 区间赋值」。推荐在学完树剖后立刻做。
- luogu P7736洛谷原题· 路径交点
- 难度:省选
- 训练目的:分层图上路径不交的选择计数,练 LGV 引理(行列式计数)。
- luogu P7737洛谷原题· 庆典
- 难度:省选
- 训练目的:特殊有向图上的可达性。道路满足「菱形性质」,练「缩点后建树 + 树上倍增」。
- luogu P7738洛谷原题· 量子通信
- 难度:省选
- 训练目的:随机化 / 分块。01 串的海明距离查询,练「按块预处理 + 暴力结合」的根号平衡。
- luogu P7739洛谷原题· 密码箱
- 难度:NOI
- 训练目的:数列操作 + 矩阵 / 平衡树。对数列末尾加减并维护某种结构,练「矩阵表示的变换 + 平衡树维护」。
- luogu P7740洛谷原题· 机器人游戏
- 难度:NOI
- 训练目的:多机器人多纸带的状态模拟 + 计数,练「状态压缩 + 周期分析」。
NOI2022
- luogu P8496洛谷原题· 众数
- 难度:省选
- 训练目的:多序列的众数查询 + 合并。练「线段树合并 / 摩尔投票 + 值域分治」。
- luogu P8497洛谷原题· 移除石子
- 难度:NOI
- 训练目的:区间操作贪心。两种移除方式,练「贪心可行性判定 + 结论推导」。
- luogu P8498洛谷原题· 树上邻域数点
- 难度:NOI
- 训练目的:树上邻域统计。给定半径求点数,练「点分治 / 长链剖分」处理邻域问题。
- luogu P8499洛谷原题· 挑战 NPC Ⅱ
- 难度:省选
- 训练目的:树同构判定。练「树的哈希 + 同构递归比较」,是子图同构在树上的多项式特例。
- luogu P8500洛谷原题· 冒泡排序
- 难度:NOI
- 训练目的:排列计数 + 区间最小值约束。练「按最小值分治 + 组合计数」。
- luogu P8501洛谷原题· 二次整数规划问题
- 难度:NOI
- 训练目的:变量取值约束下的最优解构造。练「把约束化成图后求特殊结构」的建模。
NOI2023
- luogu P9478洛谷原题· 方格染色
- 难度:提高+
- 训练目的:二维染色 + 离散化。三种染色操作,练「按操作顺序倒推 + 区间覆盖」。
- luogu P9481洛谷原题· 贸易
- 难度:提高+
- 训练目的:树上/图上路径优化。练「第一类道路构成树 + 额外边的处理」。
- luogu P9479洛谷原题· 桂花树
- 难度:NOI
- 训练目的:LCA 结构约束下的树的计数。练「由 LCA 关系反推树形」的 DP。
- luogu P9480洛谷原题· 深搜
- 难度:NOI
- 训练目的:DFS 树的性质。给定图判断能生成哪些 DFS 树,练「DFS 树 ↔ 图的边分类」。
- luogu P9482洛谷原题· 字符串
- 难度:省选
- 训练目的:字符串比较 + 数据结构。练「后缀数组 + 区间查询」或「哈希 + 二分」。
- luogu P9483洛谷原题· 合并书本
- 难度:NOI
- 训练目的:合并代价的 DP。磨损值随合并变化,练「区间 DP + 状态设计」。
NOI2024
- luogu P10785洛谷原题· 集合
- 难度:省选
- 训练目的:置换 + 集合序列。练「置换群作用下的等价类判定」。
- luogu P10786洛谷原题· 百万富翁
- 难度:省选
- 训练目的:交互 + 比较次数限制。用最少的比较找出最大值,练信息论下界与构造。
- luogu P10787洛谷原题· 树的定向
- 难度:NOI
- 训练目的:树的定向计数。要求某些点对不可达,练「定向约束 → 树上 DP」。
- luogu P10788洛谷原题· 分数
- 难度:NOI
- 训练目的:由公理系统定义集合。练「从性质反推结构」的数学推导。
- luogu P10789洛谷原题· 登山
- 难度:NOI
- 训练目的:树上有向移动的最优策略。练「树上 DP + 贪心合并」。
- luogu P10790洛谷原题· 树形图
- 难度:NOI
- 训练目的:有向图根与点的分类。练「唯一简单路径条件 → 图的结构刻画」。
NOI2025
- luogu P13271洛谷原题· 机器人
- 难度:普及+/提高-
- 训练目的:按路口编号的道路选择 + 模拟。本题是 NOI 里少见的低难度题,适合作为入门练手。
- luogu P13272洛谷原题· 序列变换
- 难度:省选
- 训练目的:序列操作的不变量。相邻两数一增一减,练「和守恒 + 可达性判定」。
- luogu P13274洛谷原题· 三目运算符
- 难度:提高+
- 训练目的:01 串变换的不动点。练「找不变量 + 判定循环」。
- luogu P13273洛谷原题· 数字树
- 难度:NOI
- 训练目的:二叉树 DFS 序与消消乐。练「栈结构 ↔ DFS 序」的组合。
- luogu P13275洛谷原题· 集合
- 难度:NOI
- 训练目的:按位与 + 子集枚举。练「位运算性质 + 集合划分计数」。
- luogu P13276洛谷原题· 绝对防御
- 难度:NOI
- 训练目的:卡牌游戏的回合制策略。练「状态机建模 + 最优策略分析」。
NOI2026
2026 年的题目难度评级仍在洛谷调整中,档位仅供参考。
- luogu P17140洛谷原题· 线段
- 难度:提高+
- 训练目的:线段相交图的特殊性质。练「区间图 → 弦图/完美图」的结构分析。
- luogu P17143洛谷原题· 中位数
- 难度:省选
- 训练目的:序列划分 + 中位数极值。练「二分答案 + 划分 DP」。
- luogu P17141洛谷原题· 传送
- 难度:省选
- 训练目的:树上随机游走 + 传送门。练「期望 DP + 树上高斯消元」。
- luogu P17142洛谷原题· 布丁
- 难度:NOI
- 训练目的:交互式数值猜测。练「查询设计 + 信息量分析」。
- luogu P17144洛谷原题· 木棉
- 难度:NOI
- 训练目的:Prüfer 序列 + 区间。练「Prüfer 编码 ↔ 树」的互相转化。
- luogu P17145洛谷原题· 彩虹树
- 难度:NOI
- 训练目的:子树颜色种类数。经典「树上数颜色」问题,练「线段树合并 / 树上莫队」。
进度总览
| 年份 | 题数 | 已 AC |
|---|---|---|
| 2016 | 6 | 0 |
| 2017 | 6 | 0 |
| 2018 | 6 | 0 |
| 2019 | 7 | 0 |
| 2020 | 6 | 0 |
| 2021 | 6 | 0 |
| 2022 | 6 | 0 |
| 2023 | 6 | 0 |
| 2024 | 6 | 0 |
| 2025 | 6 | 0 |
| 2026 | 6 | 0 |
| 合计 | 67 | 0 |
由易到难的推荐顺序
如果不知道从哪开始,按洛谷难度从低到高挑题:
| 顺序 | 题目 | 难度 |
|---|---|---|
| 1 | P13271 NOI2025 机器人 | 普及+/提高- |
| 2 | P1712 NOI2016 区间 | 提高 |
| 3 | P13274 NOI2025 三目运算符 | 提高+ |
| 4 | P9478 NOI2023 方格染色 | 提高+ |
| 5 | P9481 NOI2023 贸易 | 提高+ |
| 6 | P17140 NOI2026 线段 | 提高+ |
| 7 | P4768 NOI2018 归程 | 提高+ |
| 8 | P4774 NOI2018 屠龙勇士 | 提高+ |
| 9 | P6772 NOI2020 美食家 | 提高+ |
| 10 | P3825 NOI2017 游戏 | 提高+ |
这十题难度落在 提高 到 提高+,是进入 NOI 难度的合理台阶。
与其他题单的关系
- 省选真题:统一省选历年真题题单
- 算法点系统训练:洛谷-试炼场:省选斗兽场/NOI 神殿
- 上一级认证:CSP-S 历年真题题单
顺序建议:CSP-S → 统一省选 → 本题单。