[整理]考前再口胡 CSP/NOIP 2016~2020

题目前会放上自认为的难度评级 (1sim10)
由于这次基本都是嘴巴做的,所以难度评级不一定准确。

NOIP 2016

T1

(1),作为签到题放一个模拟很合适。

T2

(7.5),虽然是一道好题但是放在 D1T2 着实不太合适。
考虑每个人产生的贡献,这个可以将路径分成两段后直接计算。
然后我们直接计算一个点获得的贡献,这个贡献一定是子树内的点提供的,开桶记录。
好像细节巨大多的样子……

T3

(5),看起来是一个 dp 的样子,实际上确实是一个巨大麻烦的期望 dp。
先求出全源最短路,然后很自然地设计出包含第几节课、换了几次、当前换不换的 dp 状态。

T4

(3)二刷的时候一直没看出来 (k) 是固定的
由于 (k) 是固定的,所以我们直接递推即可。

T5

(4.5),用到了一些奇怪的技巧。
每次都排序显然是不现实的,需要找一些性质使得不排序。
然后我们发现先切的切出来一定比后切的切出来长,所以对于切出来的开队列直接加即可,每次从原始队列(排过一次序)和切出来的队列中取最大。

T6

(5),据说正解是状压加奇怪的优化,不过考场最亲民写法还是暴搜。
每头猪可能恰好在一条抛物线上也可能和一头单独的猪组成抛物线,搜索时注意细节处理。

NOIP 2017

T1

(2),屑找规律,不过严谨证明或者其他做法可能会稍难一点。

T2

(3),屑模拟。

T3

(6),弱化版直接 dp 巨大水,此题也只是加一维的事。
重点是判断不可行,需要看 (0) 环是否在最短路上,实现上有一些细节。

T4

(3),其实暴搜加剪枝可以草过去的。

T5

(6),正解可能比较玄学,不过暴搜还是可以草过去。

T6

(6.5),正解似乎又是怪异的算法,但是可以暴力开平衡树。
然而并不可以,需要把前面连续的一段压缩一下,这样就真的可以了。

NOIP 2018

T1

(1.5),屑重题。

T2

(3),一个显然的结论是新的系统一定由原系统中不能被其他数表出的数组成。
然后可以 dp 之类的处理。

T3

(5.5),先谔分一下,然后以树形 dp 的思路转移最长的非匹配路径。

T4

(4),原题直接暴力断边,可惜了一道毒瘤题。

T5

(6),大力分类讨论,难度主要源于式子的恶心,有些小结论考场完全可以猜(暴论)

T6

(8),屑科技题,也有更加麻烦的倍增做法。

CSP-S 2019

T1

(1.5),按照题意模拟即可,不过屑出题人卡了 ull

T2

(3.5),先看链的部分分,发现可以从上一个左括号转移以至线性解决,然后可以直接搬到树上。

T3

(8.5),爬了,如果考场遇到这题我也就拿个暴力+菊花图……
然后我们发现,把一个点的数运送到另一个点实际上确定了这些边的删除顺序:起点不能删过边,终点不能再删边,其他点的边必须连续删除入边和出边。
然后对于这些关系,用并查集啊链表啊这些东西维护一下就行了,又是一个细节巨大多的题……

T4

(5),容斥 dp,转化成有一种食材超过一半的方案数。

T5

(6),大力猜结论猜出后面的尽量小,然后我们再利用单调性之类的优化掉暴力,屑出题人卡 long long 还卡空间……

T6

(8),蒟蒻不会做于是看了题解……
发现重心有巨大神奇的性质:一个不是重心的点要么父亲为重心要么重儿子子树里有重心。
所以我们可以倍增重儿子。

CSP-S 2020

T1

(2.5),屑模拟。

T2

(3),直接把所有可能的位求出来算就行了。屑出题人又卡了 ull,让人不禁怀疑他和去年出题人的关系……

T3

(5.5),因为乘操作都是全局乘,所以我们对于一条链只需要把后面的乘操作贡献到前面的加操作上就行了。变成一张图之后也很简单,我们拓扑排序再倒倒序更新出调用操作的贡献即可。

T4

(9),是真正的毒瘤题……
考虑最强蛇吃了后会发生啥事:肯定是先随便吃直到不是最强的,然后容易证明只要最强蛇吃了不会变成最弱就还可以随便吃。但是最强蛇如果会变成最弱(下称有风险)就需要抉择一下了:如果吃了以后能吃它的蛇没有风险那么必死无疑,否则有风险的蛇就要再看下一条蛇,以此类推。我们发现最终能不能吃跟奇偶性有关系,然后就做完了。
真的做完了吗?我们发现最强和最弱不太好维护,屑出题人卡了对数复杂度,所以我们用双队列代替平衡树。

NOIP 2020

T1

(3),按照题意随便做即可,注意屑出题人又双叒叕卡了 ull

T2

(5),肯定是枚举循环串计算,可能需要预处理一大堆东西。关于周期的判定,似乎不知道 KMP 的那个结论就不太可做的样子……

T3

(7),屑构造。

T4

(8),这个操作可以说是很诡异了……
大概可以考虑走出去的条件,然后让所有点一块走看会剩下多少有贡献的。
式子推出来好像需要加个自然数幂和的优化……

总结

总而言之,重新看一看历年真题还是有一定帮助的。可以在一定程度上窥探到常考的算法、试题风格甚至命题导向等信息。
发现挺多题的代码实现都不是很常规且比较复杂,所以感觉需要练的大概是码力了……
近两年的题目难度有放飞自我的趋势,也要加强思维的训练。

内容来自_ajhfff_的博客(https://www.cnblogs.com/juruoajh/),未经允许,不得转载。
原文地址:https://www.cnblogs.com/juruoajh/p/14948715.html