天天被吊打,搞得我都去打 和 了。
所以就没时间写代码了。
《贪心题》:给出序列 和两个数 ,你每次可以给任意区间加上 或 。求最少多少次操作能使得 变为全零。数据保证有解。 。
差分后可能的形式:只考虑前 个差分值,写为 后,最小化 中负数的绝对值之和与正数的绝对值之和的较大值,与 的该值。
但如果考虑上第 个差分值,则只需最小化 满足 。注:由于 ,此时自动有 。这个形式是好做的。
注意到直线上 是关于 的 凸函数,从最小值开始,选增量最优的 往 方向调整,就是正确的。
复杂度在于最初的 。注意到,根据 和 的大小关系, 会靠近 或 。该差距不超过 。故 距离 或 不超过 。每次调整有 的增量,总调整次数 。
《读错题》:有全零序列 。接下来进行 次操作,对于第 次:让每个 增大 ,若其超过 ,则令其变为 ,且让计数器加 。求最后计数器的值。 次询问不同的 。其中 有长度为 的循环节。 且 非负。
关于题读错了还津津有味地跟蛋神讨论这件事。
任意时刻 不降,因此每次使得计数器加 的是段后缀。而且,若 在 时刻有贡献,则其在 时刻有贡献——若中途有太小的 使得 时刻不贡献,则 同样能使得 时刻不会有贡献。
注:若 ,则 时刻 相当于更强的限制。这是 的好处。
所以 在其首次被赋值后,值在周期性变化。设首次赋值时间为 ,只需求解 单个 循环节 的贡献即可。
考虑计算每个 的贡献。在 从小变大时,始终保留单循环节的贡献,动态加入新的可贡献时间。总共只有 次加入,复杂度是正确的。
于是问题有二:求首次贡献的时间;其后在循环节内,哪些时间有贡献。
前者易求:设 首次赋值 在第 轮,则 ,移项得 关于 的直线方程——尽管带有上取整,其大小关系仍只会变化一次,因为上取整是几乎保序的。又考虑到 小的优先,则只有严格不等号,可以用李超树维护,或直接建立凸包求解。
后者在枚举 时求解是困难的。但其实 是否有贡献,跟当前的 关系不大——反正是循环的,可以想象成求解无穷远处的 是否有贡献。
因此只需其余数字不限制自己。以 为例,只需 即可。
不难发现这等价于 。枚举 后,维护凸包可以 求 。因此就得到了每个 的加入时间。
考虑询问。二分得到极长后缀 使得其在 时间内至少被赋值一次,把询问放在 上。改为 从大到小枚举,将其对不同的 的贡献累加起来。这可以用线段树历史和。顺便得到 的系数。则每个询问可以 出结果。
总复杂度 。
《Codechef Xor Matrix》
时至今日,尚不能完全理解,只能破碎地、模糊地给出些猜想。蛋神题解极其简略,我不能懂其分毫。
考虑 的作用:反转该数的较低的 位。那么目标就是不断加减 使得其反转作用和 自加到 的反转作用相同。
考虑基本单位 为 内的数之间的反转作用,即长为 的数列。,其中数字 表示 以及更低的 被反转了。
把询问区间拆解得到 ,满足 且 。
答案显然为 ,不妨设 ,因为可以 走 后 走 完成 同步,而 的缺席表明这是最大的。特别地,若 ,根据下面对方案数的讨论可知,不可能使用之。
方案数呢?两侧对称,以右侧为例。若起点在 的空隙中,由于其中之一需靠近 ,问题变为,有多少种方案,从 中相同位置出发,走出 的序列,且结束时某个 在边缘。
定理:上述路径对每个起点都唯一存在,且结束时两个 在异侧边缘。
首先证明引理是,单个 从 边缘出发,走出 ,唯一方案是走到另一边缘。该引理不难用归纳法证明。
有了引理,该定理不难用归纳法证明。因此随便一个起点都能完成任务。
接下来 紧靠着 而 靠着 ,需要走出 序列。每次讨论需要走出的 由谁提供,可以将 不断推进。它的方案数应该可以 计算,应该吧(因为状态会落到 的位置)。
然而起点在 的空隙中是不可行的。因为那需要 一直停在 旁边,等待 走出 ,而 是做不到这一点的,因为右边没有充分的原料。想要利用 和该情况本质相同:都是不可实现的。
所以我们每组询问是 解决的。
《让我当小丑题》:给棵树,每个节点上有石子,在上面玩游戏,每次将单个石子移动至子树内,不可操作者负。动态增删单点石子,并询问与 相邻的点中,有哪些点满足:以其为根时,即使后手能在树上任意节点多放一个石子,先手仍然必胜。 。
我是大小丑,请问我究竟是大还是小?
注意到 值就是最长链的长度(边数)。每个点为根时,游戏的 值容易用 序上的线段树维护。而 后手能放石子就是能放 以内的值(没想到吧,我没发现这个)。
于是问题变为,哪些点的游戏 值大于 。
不要泛化,考虑 的特点:儿子节点的 值可以由 异或 得到,其中 是对每个子节点都相同的,而 可以对每个节点预处理得到。
因此对所有子节点,问题相当于是,给定 问 。在 树上可以 查询。
注:事实上,对于短儿子,它们的 即 是相同的。但这不能优化复杂度,所以就没什么了。
父节点可以暴力,总复杂度 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下