在属于我们的漫漫长夜里尽情起舞
在属于我们的漫漫长夜里尽情起舞
20251107
-
上午 T1 正确性:下称连通块大小为该连通块内可用的度数和,初始时显然等于点数的二倍。关键性质,考虑用 \(w\) 最大的边将树分开后,所有达到最大不同块之间连边次数的方案,最后要么所有点都用完了,要么有剩下点的连通块为最大的那个连通块。
证明:考虑设最大的连通块大小为 \(mx\),所有连通块大小和为 \(S\)。情况一,如果 \(mx\) 大于其他所有连通块的大小和,那么显然最大方案是让其他所有块向最大块建立连接,建立的连接总数为 \(S-mx\),如果任意两个非最大块之间有边,那么将消耗 \(S-mx\) 中的 \(2\) 个来建立一对连接,显然不优。情况二,如果 \(mx\) 不大于其他所有连通块的大小和,即 \(mx\le S-mx\),那么这种情况必然可以将全部可用度数都消耗完,原因是,可以构造一种策略,即每次选择当前最大的两块并连一条边。
20251110
-
上午 T2:我擅长于解决 NPC 问题、默认了假的结论还没意识到、转化成了不可做题还继续想。
考虑令 \(s_i=p_{i,1},t_i=len_i-p_{i,m_i}\),考虑如果一个绳子上有多个结点,那么结点之间的间隔 \(d\) 是已知数,则连接有向边 \(s_i\to d-t_i\),问题转化为求欧拉回路,Hierholzer 算法。考虑如何解决一个绳子上只有一个结点的情况,此时 \(d\) 未知,但是考虑本质上是在配对 \(s_i,t_i\),并且要求你删掉一个 \(s_i\) 和一个 \(t_i\) 最后和必须相等,这个意义不能直接做(我场上转化出哈密顿路,然后又回归到这个意义上贪心),但是考虑 \(s_i\) 升序排序,删除一个 \(s_i\) 和一个 \(t_i\) 之后和相等,那么必须是最小的匹配最大的,次小匹配次大这种,因此,可能的 \(d\) 最多只有 \(4\) 种,因为有可能 \(\#(s_i=s_1)\) 或者 \(\#(t_i=t_n)\) 只有 \(1\) 然后被删了,露出了次小或者次大,所以可能的 \(d\) 就是最小的两个 \(s_i\) 中选择一个加上最大的两个 \(t_i\) 中选择一个。
因为我整场都在纠结于我错误的哈密顿路径的转化,因此我发现了 \(d\) 很少的结论却没有发现固定 \(d\) 的正确做法,当我意识到我固定 \(d\) 的做法是完全不对的鬼东西的时候已经很晚了。
没有办法吧,对于我这种状态短时间内很难改善这个问题。
Hierholzer 算法
考虑这样的过程,我们在欧拉图中找出环,将其删除,然后递归对所有连通块做类似的事情,将得到的欧拉回路插入当前环的对应位置。我们如何简化这个实现?由于当前图是欧拉图,如果从 \(u\) 开始 DFS,每次把经过的边标记为不能再使用,那么走到的第一个出边全都不可走的点一定是 \(u\),因为我们从它开始 DFS,因此消耗了它的一个出度,却没有对应地消耗它的一个入度,此时我们就找到了环。我们在探索了所有可走边之后再把当前节点加入欧拉路径,如果我们希望得到边的序列,则从该边回溯之后立刻将其加入欧拉路径即可。如果我们希望找出欧拉路径,那么只需要从度数为奇数的那个点/入度比出度小 1 的那个点开始遍历即可。
-
T3:搞笑的是,双栈模拟队列在算法导论上竟然有。
20251111
-
T1:想了很久,但是其实最开始的 DP 就是正确的,因为其实内层转移加起来是 \(O(n)\) 的,这种情况下还是先实现然后再看最好,比如今年 CSP-S T4 也是这种题。
-
T2:做根号做傻了,写了个定期重构。
-
T3:没时间做了。不难的贪心,但是如果写得不好可能不容易调。
-
Div2 T2:感觉比以上三个都难。首先两两关键点之间最短路是经典问题,但是其实做法很取巧,可以说属于 Ad-hoc:
-
第一种,分组法,这种思想相比之下更通用,不过复杂度多一只 log,关键是如果要解决这样的问题:从 \(S\) 种选出俩,然后最小化 \(f(i,j)\),而且如果有一个算法 A 使得容易计算从不交集合 \(U,V\) 中各选一个的最小 \(f\),那么我们就可以用二进制分组法,每次按标号的一位的情况分类,调用算法 A,每一对都至少会被计算一次。在这里,我们的这个算法 A 就是多源最短路。
-
第二种方法只能适用于这个问题,我们能用的工具还是只有多源最短路,考虑每次能求出每个点距离最近关键点的距离以及这个关键点是谁,将这个图按离的最近的关键点划分成若干连通块,考虑我们想求的两两关键点之间的最短路一定是经过且只经过了两个块,这样我们枚举所有在两块之间的边进行统计即可少一个 log。
假设我们知道了这个,我接下来看出了求出的最近点对 \((u,v)\) 之间直接连边可能不是最优的,但是我没推论出方案中必然有这两个点,那也是很菜了。然后其实就可以做了。
-
20251112
T1 RMI 2019 圣诞老人 Santa Claus
观察 询问对应的最优折返点不降
显然,不可能可用的孩子多了反而需要回溯到更远
然后,我忽略了向右边走的时候也可以取礼物和送礼物,因此我以为折返区间内的所有点只需要随便匹配就行了,那么这个根据 Hall 定理我们有一个经典的判断方法即将孩子和礼物全都排序,然后要保证第 \(i\) 个礼物前面必须至少有 \(i\) 个孩子,这我们只需要使用一个线段树来维护区间加区间最小值即可。然后我写,我调,我假了。
然后我们考虑贪心策略,是否圣诞老人找到一个孩子就一定会给他分配一个它能接受的、最小的礼物呢?我们发现,并非如此,因为有可能这个孩子得留着等待我们折返的时候使用。但是,这个贪心策略对于我们折返终点之前的点是有效的,所以前面还剩哪些礼物是确定的,这些礼物也只能指望折返区间内的孩子,所以我们按刚刚的假做法做即可。
T2
这个反而比较简单,显然从较大的颜色开始复位是最优的,转化为动态图连通性问题,线段树分治可解。
T3
Ad-hoc 构造题,本题随便猜蒙很容易解决,但是严格证明是困难的。
Div2 T2
很容易想到从小到大加入数,但是会存在很多重复,可以考虑记录当前四个区域是否已经有数,以及中间那个最大值是否已经固定来做,但是这样复杂且易错,考虑更优秀的划分段方式,令:
-
第 I 段:从第一个数到 W 左边的首个局部最小值之前的所有数。
-
第 II 段:从 W 左边首个最小值到 W 中间的首个局部最大值之前的所有数
-
第 III 段:所有 W 中间的那些局部最大值
-
第 IV 段:从最后一个局部最大值之后到最后一个 W 右边的局部最小值
-
第 V 段:最后一个 W 右边的局部最小值之后的所有数
可见,如果向 III 段放入数,就相当于我们确定了局部最大值必须为它,但是是以更优雅更清晰更统一的方式处理。最终,我们必须使得全部 5 段都有至少一个数。当我们加入一组相同的数 \(x\) 时,我们需要遵守下述规则,以维护我们分段的性质,避免重复计算:
-
由于第 II 段包含局部最小值,必须严格小于第 I 段的全部数,因此在第 II 段为空的时候不能往第 I 段放入数。同理在第 IV 段为空的时候不能在第 V 段放入数。
-
由于第 III 段是局部最大值,必须严格大于第 II、IV 段的全部数,因此在第 III 段被放入数之后,不能再往第 II、IV 段放入数,并且,局部最大值只能确定为一种数,所以第 III 段必须被放且只能被放一次数。另外,在我们决定往 III 段放入数的同时,记住不能往 II、IV 段放入数。
-
由于每一段最后都必须有一种数,所以必先往第 II、IV 段放至少一个数,才能往第 III 段放入数。
计算即可。
20251113
P11883 [RMI 2024] 信号 / Signals 【构造可先想判有解的 DP】
最近做了两个 RMI 构造,挺牛的,但是它们都用了同一个技巧,就是先设一个求解是否有解的 DP,然后通过这个 DP 去导出性质甚至直接反推 DP 来直接构造。
本题中,对于一个环形的问题,如果不破环就不能 DP,所有限制都是关于两个数的相对关系的,因此可以通过调整法使得其中一个数为钦定的值,所以不妨令 \(b_1=0\),此时非常容易设 DP。
20251114
赛比午上
三个比较不牛题,关键在于是否熟悉差分约束模板(1.2h),是否在写代码之前验证了自己的做法(1h),是否发现自己做法假了的时候不是强行打补丁而是再倒回去一步简化(1h),是否在深入思考之前验证了自己猜的结论、是否读对了题、是否在发现自己结论不可维护的时候仍然毫不怀疑其正确性(1h)。
20251115
Brand new page
人一生就是一场演剧,开头是知道的,结尾也是知道的,在属于我的时代,这开头和结尾大概率不会有任何变化。如果一直纠结于当下的成败,那我想知道,什么是最终的成败?根本就不会存在吧?我们一直打着明天的旗号纠结于当下的得失,好像我们不是舞台上的演员,而是舞台后的工作人员,人生的正剧还没开演,我们只是在为它做全面准备,以使得开演之后能获得最佳效果,这又被称为“走上人生巅峰”。但是事实上,这场戏一直在进行,而许多人期望的正剧,从来没有开演过,而事实上的正剧正是不会被当成正剧的那些内容。
不管是 OI 还是高考啥的吧,我们都在期望属于自己的正剧能上演,但是实际上又有多少如愿?即使如愿,难道你的人生就只有正剧那一段可以大书特书吗?因此珍视过程,放下结果并不是对自己的麻痹或者安慰,而是没有浪费那些属于你的三万两千天(让我们假设你可以活到 90 岁),是生存的必要,是对我们最开始热血和理想的回报。难道最后“正剧”的演出平平无奇,甚至失败了,那么前面做的一切就都不存在了吗?
无论是什么原因,是我一直以来不想面对的“我没有天赋”,还是我一直以来不想承认的“我没有努力”,又或者是我一直以来感到后悔的“我的训练方法不对、我的状态一直很差”,事情扑朔迷离,到最后不会分辨清楚到底什么才是我“失败”的主要原因。
The definition of insanity is doing the same thing over and over again and expecting a different result.
https://www.bilibili.com/video/BV1wAWqzJE3g/
这句话虽然不知道是谁说的,但是它格外适合我,我每天都期望着今天的模拟赛成绩好一点,来证明我能行,可怜地,从成绩的曲线来找出一点点上升的证据,日复一日。这很疯狂,而且退一万步讲它也会影响我的心态和发挥。但是那些都不重要了,不是吗?如果我不再纠结今天模拟赛是否被学弟薄纱;我不再纠结那几乎必然的“失败”;我不再纠结未来,无论它会更好还是更糟,不必用确定性定义它们,它们本来就是不确定的;我不再需要向自己或者任何人证明我能行,我有投资的价值(那些一直以来支持我的人,谢谢你们,对不起),这些“他妈的蠢事”就会消失了,我也不再疯狂了。
莫听穿林打叶声,何妨吟啸且徐行。
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
料峭春风吹酒醒,微冷,山头斜照却相迎。
回首向来萧瑟处,归去,也无风雨也无晴。
尽管世界不会因为我的改变而不再风吹雨打,但是如果能有“一蓑烟雨任平生”的豁达,这也不是坏事,这让我能成为,我意义上的,一个真正的人,或许我不会活得很好,甚至会很糟,到时候又给“亲戚朋友”增添“谈资笑料”、“反面教材”了,说着什么“假如当初”“吃亏在眼前”之类的,可是凭什么,用这种眼光来看我呢?
以上或是陈词滥调吧,但是越是陈词滥调越说明要做到很难,所以得一直说,免得忘了。无论如何我祝福你们,那些所有在 OI 中奋斗的人,祝福你们都有属于你的正剧上演,不需要思考这些问题。但如果没有,别忘了实际上“正剧”从没有存在,或者说它一直在上演。
本文来自博客园,作者:haozexu,转载请注明原文链接:https://www.cnblogs.com/haozexu/p/19202512

浙公网安备 33010602011771号