NOI历年试题小结
NOI2014
NOI2015
NOI2016
优秀的拆分
95分平方方法很容易。
枚举被重复的串长,每隔串长划一个关键点,求关键点之间的相邻串的最长公共前/后缀。计算重复段区间加,用差分/前缀和处理。
周边:字符串;调和级数、字符串哈希、差分/前缀和
网格
答案最多为2。判断最多与周围两圈格子有关。不求AC
周边:观察性质
循环之美
首先根据题意写出一直变量之间的数论关系式,写出答案式,套用莫比乌斯反演,需要杜教筛。
周边:数论;莫比乌斯反演、杜教筛
区间
从位置角度思考,需要进行的操作是增加/减少区间,查询排名差距为m的最小长度差。显然不可行。
从区间角度思考,按长度顺序加入区间,用双指针扫描,问题变成区间加/减,求区间最大值。线段树维护。
周边:数据结构;线段树、双指针、离散化
国王饮水记
没有思路。
不妨设1号城市水位最低。先去掉使用次数的限制——可以得到从小到大依次单独与1号联通最优;加上限制——连通的一定是若干连续段。那么就可以动态规划。盲猜决策单调性,这也是没办法的事。
周边:动态规划;排序、决策单调性
旷野大计算
可以手玩。学习zzq的技巧,写一个程序将语言转化得简单些。
NOI2017
整数
压位线段树大模拟,写起来mmp
周边:模拟;压位、线段树
蚯蚓排队
首先想到的是O(nq)的暴力。观察到询问串长非常小,那就把所有可能询问到的串直接哈希带走。
周边:字符串;哈希、桶
泳池
丝毫没有思路。
周边:动态规划;特征多项式
游戏
没有x图的时候是一个2-SET问题。
由于x图最多8个,可以枚举不用A车或不用B车化为2-SET。不枚举C车的原因是如果选了A车成立在不用B的情况出现了,选了B成立在不用A的情况出现。
周边:算法;枚举、2-SET
蔬菜
从网络流开始考虑。给蔬菜和天之间连边,后一天向前一天连边作为后一天没卖掉的,跑费用流。
模拟费用流。
周边:模拟费用流;贪心、数据结构
分身术
暴力吧,据说这题维护100层凸包。
周边:计算几何
NOI2018
归程
堆优化迪杰斯特拉+克鲁斯卡尔重构树,卡SPFA
周边:算法;最短路、贪心
冒泡排序
满足条件的序列最长下降子序列长度不超过2,不考虑初始字典序限制,dp,考虑在平面上的路径,枚举在哪个地方脱离限制。
周边:动态规划
你的名字
离线,把所有串连在一起求SA,用主席树查询问。或者可以SAM+线段树合并。
周边:字符串;SA
屠龙勇士
exgcd求逆,扩展中国剩余定理解方程组。
周边:数论;exgcd、exCRT
情报中心
给定路径端点建虚树,然后讨论,线段树合并维护信息。
周边:数据结构;虚树、线段树合并
多边形
什么东西啊,网上根本找不到题解
NOI2019
回家路线
斜率优化动态规划
周边:动态规划;决策单调性
机器人
暴力考虑区间Dp,f[l][r][x]表示区间l到r最大值为x的方案数,枚举最大值位置,记忆化搜索,可以得到可观的分数
周边:动态规划;区间Dp、记忆化搜索
序列
可以做费用流。
考虑动态规划,按a数组排序,分为两部分,前一段要么只选a,要么选ab,后一段要么不选要么选b要么选ab,前后分别Dp然后枚举分界。
也可以按a+b排序,则前缀是a、b、ab,后缀是a、b、空。
最后正解是六个堆。
周边:模拟费用流
弹跳
树套set。
周边:数据结构;树套树
斗主地
直接Dp
正解是期望的线性性还是二次然后用三个数插值。
周边:动态规划
I君的探险
会二分、整体二分就能得到可观分数。
有时间乱搞一搞也是有不少分的。
NOI2020
考过就退役了。