把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

杂专选题,杂脑选长ycx

CF713E Sonya Partymaker

先考虑二分答案,然后每个点就可以往左或者往右覆盖一段长度为 mid 的区间,问最后能不能全部覆盖。

为了使问题更 easy 一点,我们先来考虑序列上的问题。不妨设 fi 表示 [1,Ai] 都已经被覆盖的情况下,往右最多能覆盖到哪里,最后判定 fn 的值即可。

有两种转移:

  • i 号点往右,直接转移到 fi+1,这需要 fiAi+11
  • i 号点往右,转移到 fj,且 j 是第一个往左的,和 i 相接,中间一段全部往右。

这样转移看似是 O(n2) 的,但是实际上,第二种转移只需要往后转移不超过两个点,因为如果超过两个点,则中间一段往右的只有最右边一个有意义,则可以将第一个改写成往左的,因此转移是 O(n) 的。

然后我们需要放到环上。在没有点从 n 号点往右覆盖到 1 号点 的情况下,我们只需要枚举前两个点哪个是往左的,分别 DP 一次即可。为了解决这个问题,我们对环进行旋转,将 n 号点与 1 号点之间的空段旋转成最大的。这样要么 mid 小于等于最大值,那么每个点都往右就能满足条件,要么一定不能从 n 号点覆盖到 1 号点,就可以 DP 了。时间复杂度 O(nlogm)

submission

CF1458D Flip and Reverse

首先这个形式太难看了,我们将 0 看成 11 看成 1,作其前缀和。我们发现,这个操作就相当于选择两个相等的位置 l,r,reverse 区间 [l,r] 的前缀和数组。

接下来我们证明,只要一个数组每种元素的个数和原本的前缀和数组相同,并且相邻两个元素差的绝对值为 1,则这个数组就是可以生成的。

考虑我们现在由原来的前缀和数组,已经使得前 i1 个正确了,要构造第 i 个,如果第 i 个原本就是正确的直接跳过,否则总可以找到一个和 Ai1 相等的位置,使其前面一个数为我们希望的 Ai,就可以直接 reverse 这个区间。每一步都是可以构造出来的,所以只要满足这样的都可以构造出来。

然后考虑依次确定每一位。如果当前填 0,则代表现在要往上走,那么,要么之后会走回当前点,要么当前点往下已经没有需要走的点了,否则就只能填 1,容易 O(n) 判断。

submission

WC/CTS2023 楼梯

感觉是长脑子的一个题。

首先我们发现,直接对着这个干是不太能做的,所以我们需要一点想象力,比如考虑右下边界。

一个方格生成格的边界格数量等于其右下边界长度减去 1,也就是说,如果从左往右考虑整个楼梯的右下边界,将横着的看成 0,竖着的看成 1,那么我们相当于要找一对 (0,1) 满足其距离为 q

然后考虑 q 是边界长度的约数有什么用,你会发现,右下边界第一个各自是 0,最后一个是 1,其中恰好差了 q 的倍数,则可以二分,取一个除 q 意义下的中点,然后如果这个点是 0,就取右半边,否则取左半边即可。

用平衡树维护,时间复杂度 O(nlogVlogn)

submission

posted @   275307894a  阅读(189)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源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
浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示