NOI 历年真题题单

整理 2016 年起全国青少年信息学奥林匹克竞赛(NOI)正赛真题,按年份与试次排列,附前置训练方向。

0 / 0 已完成

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 档。它不是用来"刷完"的,用途有三个:

  1. 看风格:NOI 爱考什么、怎么设置部分分、题面长什么样。
  2. 练部分分:NOI 每题都有明确子任务,暴力分往往能拿 30–60 分,这部分是必须练的。
  3. 定上限:知道自己离省队线还差多远。

建议先做省选真题(统一省选历年真题题单),省选稳定进省队之后再来做本题单。

使用建议

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 难度的合理台阶。

与其他题单的关系

顺序建议:CSP-S → 统一省选 → 本题单。