杂专选题,杂脑选长ycx
CF713E Sonya Partymaker
先考虑二分答案,然后每个点就可以往左或者往右覆盖一段长度为 的区间,问最后能不能全部覆盖。
为了使问题更 easy 一点,我们先来考虑序列上的问题。不妨设 表示 都已经被覆盖的情况下,往右最多能覆盖到哪里,最后判定 的值即可。
有两种转移:
- 号点往右,直接转移到 ,这需要 。
- 号点往右,转移到 ,且 是第一个往左的,和 相接,中间一段全部往右。
这样转移看似是 的,但是实际上,第二种转移只需要往后转移不超过两个点,因为如果超过两个点,则中间一段往右的只有最右边一个有意义,则可以将第一个改写成往左的,因此转移是 的。
然后我们需要放到环上。在没有点从 号点往右覆盖到 号点 的情况下,我们只需要枚举前两个点哪个是往左的,分别 DP 一次即可。为了解决这个问题,我们对环进行旋转,将 号点与 号点之间的空段旋转成最大的。这样要么 小于等于最大值,那么每个点都往右就能满足条件,要么一定不能从 号点覆盖到 号点,就可以 DP 了。时间复杂度 。
CF1458D Flip and Reverse
首先这个形式太难看了,我们将 看成 , 看成 ,作其前缀和。我们发现,这个操作就相当于选择两个相等的位置 ,reverse 区间 的前缀和数组。
接下来我们证明,只要一个数组每种元素的个数和原本的前缀和数组相同,并且相邻两个元素差的绝对值为 ,则这个数组就是可以生成的。
考虑我们现在由原来的前缀和数组,已经使得前 个正确了,要构造第 个,如果第 个原本就是正确的直接跳过,否则总可以找到一个和 相等的位置,使其前面一个数为我们希望的 ,就可以直接 reverse 这个区间。每一步都是可以构造出来的,所以只要满足这样的都可以构造出来。
然后考虑依次确定每一位。如果当前填 ,则代表现在要往上走,那么,要么之后会走回当前点,要么当前点往下已经没有需要走的点了,否则就只能填 ,容易 判断。
WC/CTS2023 楼梯
感觉是长脑子的一个题。
首先我们发现,直接对着这个干是不太能做的,所以我们需要一点想象力,比如考虑右下边界。
一个方格生成格的边界格数量等于其右下边界长度减去 ,也就是说,如果从左往右考虑整个楼梯的右下边界,将横着的看成 ,竖着的看成 ,那么我们相当于要找一对 满足其距离为 。
然后考虑 是边界长度的约数有什么用,你会发现,右下边界第一个各自是 ,最后一个是 ,其中恰好差了 的倍数,则可以二分,取一个除 意义下的中点,然后如果这个点是 ,就取右半边,否则取左半边即可。
用平衡树维护,时间复杂度 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2023-03-17 luogu P5405 [CTS2019] 氪金手游
2022-03-17 luogu P3239 [HNOI2015]亚瑟王
2022-03-17 luogu P5776 [SNOI2013]Quare