CTS2024
水镜
先考虑如何判定一个区间 是否合法。
首先肯定存在一个分割点 ,使得 取 , 取 。
因此,记 ,则 需要先不升,再不降,并且只能在转弯处有至多一对相等。
考虑其反面,也即不存在 。对于每个 ,这会导出一个限制,为 ,则判定一个区间是否合法只需要判定所有限制的并是否为全集即可。
又因为答案具有单调性,所以双指针即可,判定全集有一万种方法,时间复杂度 。
线段树
记线段树 点的区间为 。
首先需要做一个转化:对于线段树上第 个点,如果我们知道其权值,就将 与 之间连一条边,那么 的权值可以求出充要于 与 联通。
把线段树这个图放到平面图,会发现这是一个三角剖分类似物,因此对于第 个点,会有两种情况:
- 与 联通,并且子树内的联通已经处理好了,子树内到子树外的联通要求都和 联通了。
- 与 不联通,并且存在一个 ,使得子树内所有没有跨过 的联通要求都满足了,跨过 的联通要求都一端和 联通,一端和 联通。
则我们将第一种记作 ,第二种记作 。
与 之间的转移是平凡的。
与 的转移不会改变 ,因此是一个整体乘法。
与 的转移需要要求跨过 的限制相同,也就是, 的要求都在 满足了。这个可以用 xor-hash 处理出等价类,然后在等价类之间转移。
最后在 点的 还要整体转移到 。
上述过程可以用线段树合并维护,时间复杂度 。
众生之门
首先任何一棵树都可以构造出一个排列,满足相邻两个点距离 ,因此答案 ,并且因为奇偶性是确定的,所以答案的最后一位是确定的。因此我们只需要确定答案的倒数第二位是啥就行了。
然后发现,除了菊花和 比较小的情况,最后的答案都是 的。
但是怎么构造呢?答案是直接随机(。因为你感受一下,你随机一个排列,答案是均匀的,因此每次随机交换两个位置,然后计算新的贡献即可。
多方计算
首先我们有一个 的做法:在第 个时间将所有第 个人的第 位满足 传到下一个人,并把这一位清空,下一个人将这个值加到对应位置上并进位。这样最多需要增加 位,可以获得 分。
这个做法刚开始的时间非常浪费,后面的点都没有传递信息。我们考虑让后面的点从 位开始传递信息,传递一个三角形掉,这样前面的进位就只有 个了,就可以做到 。
这样会比限制多一步,我们只需要让开始的位从略小于 的位置开始。真正限制开始位置的是这一次加法的进位数量,我们将后面的三角形改成对很多平行四边形同时做加法,就可以刚好进这个限制。
投票游戏
首先我们可以求出 表示 被票出时候 有几票,这样只需要比较 和 的大小即可。
首先考虑假设 的儿子的 都知道是啥了, 怎么求。维护一个变量 , 当票数降到某个 的时候,将 减去 。当 第一次和票数相同的时候就是 的值。这个值可以维护线段树并在线段树上二分快速得到。这样就可以做随机树和菊花的情况。
然后一个自然的想法是轻重链剖分,并在重链上维护一些信息。考虑 的重儿子 ,记 去掉 之后的答案为 ,则若 ,则 ,否则说明 最终一定会被去除,则在线段树上改一下初始值之后再二分出另一种答案即可。
这样我们每个点的答案可以用一个函数表示:
这显然可以线段树快速求一条链上的答案,然后轻边暴力,这个题就做完了,时间复杂度 ,如果维护儿子的地方写平衡树就可以做到 。
字符串游戏
记 表示 在 中出现次数。
记 表示 的答案,显然有 dp 是 。
这个 dp 是 的,非常不牛。为了优化这个 dp,我们需要对这个 dp 观察一些性质。
一个比较容易发现的性质是,如果 且 ,则从 转移一定不会比从 转移更优,因为 ,所以我们只需要保留 的前缀最小值即可。
但这是不够的。我们还可以注意到,如果在某次转移中, 的最优转移点是 ,则 之前的转移点都没有用了。这是因为对于两个 ,在 减一的过程中, 的减小量 的减小量。
这样就可以决策单调性,但是复杂度是两个 log 的,过不了。
我们尝试维护一个单调栈,栈内满足 单调递减。每次拿栈顶转移到 ,然后判断 是否小于栈顶,如果小于就把栈顶弹了,否则退出。
这个做法的正确性在于,我们做完之后,记栈顶为 ,一个非栈顶为 ,需要证明 对 的转移不劣于所有 对 的转移。
反证,假设 ,则有 ,矛盾。因此 转移完备。
所以我们只需要支持求 即可,这个可以倍增+bit 实现,时间复杂度 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2023-09-11 QOJ # 5573. Holiday Regifting