Codeforces Round 858 (Div. 2)
1|0Preface
这场CF打的好难受啊,A刚开始忘记切换语言了CE了两发,B漏了一种情况挂了一发,C纯靠暴力找性质,D比赛时没人写我题目都没仔细看
然后E本来秒出了解法,结果就是因为unordered_map
的大常数一直TLE,而且由于我又菜又懒没去手写Hash
最后综合下来就是大爆炸,苦路西苦路西
2|0A. Walking Master
首先特判掉一些显然无解的情况,然后我们先把修到
然后若则显然无解,否则我们可以通过调用两次操作来使得直到其等于
3|0B. Mex Master
分类讨论题想清楚了再交啊!!!
由于是要求mex的最小,因此首先考虑统计出的个数,显然若,则我们总可以构造一种方案使得相邻两数之和不为,此时的答案就是
否则考虑若数列中存在大于的数,则显然我们可以把数列前面一段都置为,然后在后面放一个大于的数,此时任意相邻两数之和要么大于要么等于,此时的答案就是
否则则说明数列中只含有和,此时不论如何构造答案都只能是
但是要注意特判所有数都等于的情况
4|0C. Sequence Master
纯在找规律,不然真的想半天连样例的第三组和第四组是怎么构造出来的都想不通
先扔一个比赛时暴力找规律的代码,虽然跑的有点慢不过基本能通过它找到性质
然后大概总结一下规律就是(默认全为总是一种可行解,且以下的数列不考虑顺序):
- 当时,答案为
- 当时,有以下两种其它的合法序列:
- 当为大于的奇数时,此时不存在除了全为以外的合法解
- 当为大于的偶数时,此时还存在如下的构造方案:
- (即一个和个)
然后讨论下原序列到哪个目标状态的变化值最小即可
5|0D. DSU Master
比赛时纯题目都没看,今天想了下还是屁都想不出来,只能去看Tutorial,只能说好仙好仙
我们考虑新加入一条边对答案的影响,不难发现此时必须是组成的弱联通分量里出度为的点,否则这条边一定无法产生贡献
除此之外,还必须满足这条边必须是最后才加入的,并且此时
因此我们可以写出一个关于答案的转移方程,
因为从转移到时这条边不管插入在哪个位置都不会影响的贡献,因此要乘上
而表示组成的弱联通分量的出度为的点为的方案数,有转移
这个转移方程的推导也很trivial,若则这条边随便怎么连,方案数就是
否则若则这条边不能放在最后,不然就会引出一条从到的边,因此转移系数要减去
综上我们即可递推解决该问题
6|0E. Tree Master
这题基本一眼没有什么优秀的做法,暴力跳的部分感觉没有优化空间了,那么不妨大胆以暴力为基础构思
首先对于询问的两个点,我们先找到它们的LCA,记为, 然后考虑利用类似于根号分治的思想:
- 若,则我们直接暴力把跳到,然后加上提前预处理好的根节点到每个点的答案,这部分复杂度是的
- 若,不妨设,则这样的点最多有个,两两配对最多只有对,如果我们把每次跳的点对的信息都记忆化一下,总复杂度的上界就是,当时这部分复杂度也是的
然后我写的时候在记忆化的地方直接开个unordered_map
,然后常数有点大直接爆炸了
后来发现由于才,可以调整下阈值来减少对记忆化部分的调用,遂把阈值改到即可通过
然后看了Tutorial后发现其实可以只对每种深度的节点数小于的某些点做记忆化
这样只要开个数组就好了,而且还不用写LCA了,最后跑起来也是飞快
7|0Postscript
最后的F1/F2感觉有点仙啊,周末过完了就先放一放了
希望下场别遇到这种纯在坐牢的场次了,感觉比赛的时候都没有太多好的idea,只是在找规律和卡时间的说
__EOF__

本文链接:https://www.cnblogs.com/cjjsb/p/17233974.html
关于博主:复活的ACM新生,目前爱好仅剩Gal/HBR/雀魂/单机/OSU
版权声明:转载请注明出处
声援博主:欢迎加QQ:2649020702来DD我
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具