NOIP2021 游记
Day -21 ~ -1
停课了,好开心o( ̄▽ ̄)ブ
中间没有什么好说的,无聊的集训。
Day 0
跟同学颓废了几乎一天,意外地发现备考室电脑有 PVZ2,玩了一会。
下载了 MC 玩玩,然后专注于物理画线(
希望不要炸。
Day 1
吃过早餐就到考场了,密码忘了。
先看 T1,发现最大的数 的后一位也才 ,所以想到了一个暴力的做法:把所有不符合条件的数筛出来,然后预处理下一个数是多少。
测了一下极限数据,感觉可以过,就没管了。
T2 没有任何思路,是我不会做的题,于是打了 50 分暴力滚了。
T3 更不会了,连差分的关键性质都没观察到,打了 12 分就滚了。
T4 感觉很可做,有大量部分分,于是开始莽。码了个类似 bfs 的东西,期望 44 分,但是第三个大样例没过,不会打暴力的我只能眼调。
后来的三个小时,我就一直对 T4 眼调,试小样例,重构了 3 次,到最后都没能调出来……
没什么好说的,这种垃圾游记还好意思写出来。
Day ???
果不其然,T4 炸了,100+50+12+0=162。
在同学们一个晚上的帮助下,发现了 T4 爆零的问题:数组没有初始化。
啊啊啊啊啊什么出题人会出这种 的题目啊。
不过我还是不知道为什么大样例没过。
压线一等。ZLT 194,ZTC 187,WCJ 168,都是大佬。
膜拜学长 LH 344 全省第一!!!
退役了。
Bonus
既然打的太烂了,我来补充一下中间两题的解法吧。
T2 在考试当天晚上就想出来了,也许我应该肝 T2。
考虑到 不大,就算 ,也只会对前 5 位产生影响。
按 的顺序决定要选多少个进到 。设 表示现在 里面有 个数,已经选完了 的数,对二进制 位后 位的影响为 ,目前 的个数为 的答案。
直接枚举转移即可,复杂度 。
T3 令 为 的差分数组,一次操作就相当于交换相邻两个 。所以题目要求重排 ,使得方差最小。
化简一下方差的式子,得到 。
通过打表发现,最终答案的 数组一定先递减后递增(证明有点麻烦),所以将 数组从小到大排序,每次可以将 往两边放,暴力做的时间复杂度为 。
用 优化求解过程,可以记录 或 来最小/大化另一个式子。因为 会小一点,记录的空间会更小,所以选择这个。
设 表示考虑到 ,目前 , 的最小值,转移方程推一推就出来了,时间复杂度 ,无法通过最后一个 sub。
发现题目中的 很小并且递增,所以有很多 的值为 。事实上, 时的转移是无用的,所以可以直接忽略,复杂度变为 ,可以通过。
范围很奇怪,建议用滚动数组。一些奇怪的随机化做法也可以过。
本文作者:AFewSuns
本文链接:https://www.cnblogs.com/AFewSuns/p/noip2021.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步