agc026 题解
A
相邻的相同就把它改掉。模拟即可。
B
先把前面的一些情况特判掉。
注意最后落在的位置一定是形如 的形式,判断一下在这个取模环上是否有 的数即可。
C
折半搜索。
先大力枚举左边的情况,把对应的右边的情况放在 map 里然后去查询。
D
一列一列放。
如果前面一列和当前列交的部分全部都是 交替,那么可以和上一列状态相同,否则必须取反,然后 上一列的部分可以乱选。
因此设 表示前 列,从下向上的最长 交替段长度为 的方案数。
直接转移复杂度 ,离散化一下就可以 了。
E
提供一个超级无脑做法。
想一下 dp,一个经典套路是从后向前 dp,这样只需要存字典序最大,因为如果从前往后,两个状态一个是另一个的前缀,这样不知道该取那个。
那么如果直接暴力转移是 的,考虑咋优化一下。
如果后面一个区间是和当前区间不交,那么只要选一个后缀最大值即可,这个可以开一个 表示后缀最大值。
如果相交,有两种情况:ab
和 ba
。
如果是 ba
,容易发现这个区间中所有的 ba
都需要选,因此直接选最前面那个即可。
如果是 ab
,所有 ab
区间不能交,依然是选最前面那个即可。
三种情况,只有三个转移,直接选即可。
为了方便,直接开 set 记录字符串。
比较卡常,但是讨论一下,上面三个转移可以更少。
F
只会 的区间 dp。
容易发现对于一个区间,先手答案显然大于后手。
如果 是偶数,那么先手要么选所有奇数位置要么所有偶数位置,因为不然的话后手可以选择去奇数的那半边,然后另一个区间变成后手先选,那肯定不优。
然后考虑奇数情况,前面先一直选偶数位置,某一个时刻选了奇数位置,此时剩余区间中,先手一定会得到所有的奇数位置。
那么就相当于是所有的偶数,然后翻转了一个区间。
二分答案,这样会有很多个满足条件的区间。
为了先手一定能缩成一个合法的区间,说明区间需要满足 。
因此直接判定即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2022-03-21 浅谈矩阵在OI中的应用
2022-03-21 3月杂题选做(part 2)
2022-03-21 NOIP2021游记
2022-03-21 CSP-S 2021游记
2022-03-21 CSP2020+NOIP2020爆零记
2022-03-21 vp记录