NOI 补题
NOI2016 589/600
优秀的拆分 100/100
忘了。
好像是 SA 然后枚举长度然后撒关键点然后分类讨论,复杂度带个调和级数。
哪天太摸了就来具体补一下。
网格 100/100 [4 Attempt: 44 - 84 - 92 - 100]
答案不超过 2(隔离一个角),然后自然就是大力分类讨论。
如果少于两个白点,或者两个连通白点,输出
如果不连通,输出
怎么感觉写成绕口令了。
如果有割点,输出
剩下的输出
44 -> 84 是没判一行/一列。
84 -> 92 是修了一个 xy 打反。
92 -> 100 是数组开小了。
循环之美 100/100
一大堆式子。好像之前写过一个题解。
区间 100/100
长度排序双指针,搞个线段树维护区间加区间最大值即可。
正确性显然。
国王饮水记 100/100 [2 Attempt: 95 - 100]
nb 题,过几天来补上题解。
旷野大计算 89/100
有点忘了,明天复习一下就补上。
NOI2017 500/600
整数 100/100
线段树维护压位高精。挺 trivial 的,就不写了。
有时间再写一遍这题。
蚯蚓排队 100/100
写个 hash 表,然后暴力即可,非常愚蠢。
泳池 100/100
冲个笛卡尔树 dp 板子可以得 70。
然后考虑到一定是一堆很短的白块用黑块分开,于是可以再套一个 dp,而外面的这个 dp 可以常系数齐次线性递推优化一下。
游戏 100/100
爆搜 x 换成 a 还是 b 就可以覆盖所有情况,然后每一个图只有两种选择,跑 2sat 即可,
蔬菜 100/100
好像写过一个题解。
分身术 0/100
算几
NOI2018 500/600
归程 100/100
既然是先从
这样就可以转化为一个动态连通性问题,倒着涨水就行。怎么还有个强制在线,感恩出题人不卡空间,写个可持久化并查集就 ok 了。
冒泡排序 100/100
最近写过一个题解。
你的名字 100/100
首先把所有字符串接起来建个 SA。
然后对于一个询问,在
注意到这个形式上非常像 height,于是可以套用 height 的求法转化成线性次 check 一个长度是否可行。这个直接拿个主席树维护即可。
复杂度
这个题感觉最难的地方在于观察到求答案的过程类似于求 height。在考场上可以考虑一下手头的模型是否与某些经典模型类似。
屠龙勇士 100/100
EXCRT 板子。
noi 之前记得复习一下。
情报中心 100/100
nb 起来了。。
观察到这个题给了个
首先考虑
下部点一定是两个路径各一个端点的 LCA,提示线段树合并;上部点一定是一个路径的 LCA,提示树上差分。
于是考虑把路径树上差分之后线段树合并维护。由于合并点确定后交的长度受更深的 LCA 的限制,所以把一条路径记在线段树上的位置设为其 LCA 的编号,然后就是统计偏序对的权值之和最大值,这个可以利用线段树的分治结构自然维护。
这样
考虑
得到
枚举一侧的交的端点,然后除了另一侧距离全都可以拆成独立量。于是把独立量挂到那边的两个点上求直径就可以了。可以使用经典的动态维护点集直径。
把这两个做法拼起来,
然后我就写了 10KB。
有时间的话把这题也写一遍。
多边形 0/100
450 行
不过为啥我不怕上一题 350 行怕这题 450 行,如果实在闲的没事可以试着补一下。
NOI2019 536/600
讲过,不写了。
NOI2020 400/600
美食家 100/100
随便拆个点然后矩乘即可。
命运 100/100
写过题解。
时代的眼泪 100/100
写过题解。