Codeforces Round #832 (Div. 2)
1|0Preface
感觉现在水平有点迷了,D秒出的正解然后被一个细节搞了一直过不去,打完对着代码看一眼就发现了
场场掉分这谁顶得住啊
2|0A. Two Groups
SB题,把所有正数和负数分开放即可
3|0B. BAN BAN
就这SB题我还WA了一发
考虑对于每个长度为3的块,我们把它和关于中心对称位置上的数交换就可以做到的复杂度了
举个例子,对于的情形,有
4|0C. Swap Game
现在拿到这种博弈我都是先码个暴力然后开始找性质,然后猜个结论直接过
先给出结论:若是整个序列中的最小值,那么先手必败,否则先手必胜
证明的话考虑用归纳法,设,当时:
- 若,显然此时先手必败
- 若,此时先手可以把后面的换到前面来,就转化成了必败态,因此此时先手必胜
设当时结论成立,当时:
- 若,无论先手把这个数换到哪里,后手只要把它换回来就转化成了的先手必败态,因此此时先手必败
- 若,先手只要把后面的换到前面来即可,此时先手必胜
因此结论成立,直接做即可
5|0D. Yet Another Problem
妈的写错一个巨ZZ的地方害得我一直以为思路有问题,最后心态爆炸
大致问题就是我开了一个map <int,vector <int>> s[2];
然后想在每一个存在的元素后面加一个,结果这样写
直接寄了,因为这只是修改迭代器对应的值,并没有真正修改要改的地方,后面写成这样就可以了
好了下面开始讲正题
首先我们分别考虑二进制下每一位,不难发现我们的操作不会改变这一位上的数目的奇偶性
因此每一位上的个数必须是偶数,因此一个有解的充要条件是区间的异或和为
接下来考虑算答案,首先先特判掉区间内全为的情况,然后如果区间长度是奇数答案也显然是
考虑区间长度为偶数的情况,先排除掉两个端点存在的情形,此时答案仍然为
否则我们可以把一个长度为偶数的区间划分成两个长度为奇数的区间,只要保证两个子区间的异或和都为即可
由异或的性质知找到一个子区间即可,即找到,其中为异或前缀和
我们可以把下标奇偶分开讨论,考虑用map
记录下满足对应的下标集合
然后询问的时候在上面二分找到第一个出现在后面的下标,判断是不是在之前即可
(其实只要从前往后扫一遍记录下每个数能和它凑出的长度最短的异或和为的奇数区间的下标即可,但是比赛的时候太执着于算法本身的正确性而没去想实现的细节错误)
6|0E. List Generation
思维妙题,很有AGC风格的一道题
首先问题可以被转化为坐标系走路,从到的路径上选出一个点集,求所有本质不同的点集的大小之和
由于一个点集可能会有多条包含它的路径,我们为了不计重,考虑强制从一个点到另一个点的路径是先上再右,不难发现此时点集和路径唯一对应
因此现在先考虑路径的方案数,对于这种坐标系上走路的问题一个常用的trick就是统计拐点
我们枚举拐点数目,不难发现此时方案数为,此时路径已经被唯一确定
考虑剩下的个点(除去拐点和起点终点),接下来考虑这些点的贡献
枚举在这个点中选择的点数,则总贡献为
注意还要算上起点终点和拐点的贡献,这部分是
总复杂度,代码的话非常简单了
7|0Postscript
这场巨可惜,本来四题保底的,结果变成了这样
感觉比赛的时候思路没有平时清晰啊,看来得多多实战找感觉
__EOF__

本文链接:https://www.cnblogs.com/cjjsb/p/16864918.html
关于博主:复活的ACM新生,目前爱好仅剩Gal/HBR/雀魂/单机/OSU
版权声明:转载请注明出处
声援博主:欢迎加QQ:2649020702来DD我
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)