杂题乱做3
CF1503D Flip the Cards
鸽了很久,也攒了挺多题,总之从刚做的开始写。
首先,不能同时有 ,因为这样就会存在另一组 ,这两组显然构不成题目中的偏序关系。
钦定原序列中 中较小的为 ,较大的为 ,我们发现答案序列肯定是一个前缀 对所有 满足交换后 ,对所有 满足 ,即 序列单峰, 序列单谷。
考虑将原序列按 升序排序,答案序列相当于将这个序列撕成两个按 降序的子序列,再拼起来。
此时应该可以一车 用 ds 优化 dp 了,但是有优秀而好写的线性做法。我们对排序后的 序列做前缀 和后缀 ,如果存在 ,则前后两个部分互不干扰,因此我们将这样的段分开来做。然后,我声称这样的段划分方案是唯一的,因此直接划分,然后分类讨论分成的哪一段翻转即可,写法非常简单。
关于为什么是唯一的:
假设分出的一段是 ,则 一定不是区间 ,不然会单独划分为另一段。假设区间 的位置为 ,如果区间合法,则 区间必然满足 单调递减,且划分时这些必然都划分到 所在的一段。
若 不为 ,我们的划分保证存在 使得 ,因此区间 内所有 的 都选入 序列,其余选入 序列。
然后我们发现刚才的性质可以继续扩展,即:若 ,则存在 使得 ,因此区间 内所有 的 都选入 序列……
于是我们发现划分方案是唯一的。
CF1500C Matrix Sorting
首先先给行之间两两匹配,可以使用哈希解决,有多个相同的从上至下匹配,如果无法匹配说明无解。
然后,全局排好序相当于 对相邻行的上下关系都满足,因此我们一组一组考虑。
观察到每一列至多操作一次,所有对于每一组,我们考虑每一列对其关系的影响,如果 ,那么按第 列排序后可以修正第 组的关系,我们从第 列向第 组关系连边。若 ,那么按第 列排序会打乱第 组关系,我们从第 组关系向第 列连边。然后,这张图的拓扑序状物的倒序就是一组解,特别的,因为只要有一列能修正第 组关系就能将其排好序,因此我们将组的入度设为 。
最后,如果一组入读没有清零(即没有列将其还原),一开始也不满足,则无解。
P6900 [ICPC2014 WF] Sensor Network
(2023.11.29 模拟赛T1)
首先点对之间的距离只有 个,我们枚举作为答案的点对,记录其距离 。然后枚举哪些点到这两个点的距离都小于等于 ,并按在其连线段的哪一侧(叉积的符号)划分。
然后在已选的距离大于 的点之间连边,观察到同侧的点两两之间距离一定小于等于 ,因此连出的是一张二分图,跑最大独立集即可。时间复杂度 。因为跑不满(枚举点对、最大独立集都是),所以还是跑得比较快的。
补充一下,二分图最大独立集输出方案时,是 A 点集里和源点联通的,以及 B 点集里和源点不连通的。这题还要记得特判 1。
P7372 [COCI2018-2019#4] Slagalica
(2023.11.28 模拟赛T3)
感觉评不了黑。首先,我们发现 T x y
R x y
R x y
三步可以交换 (x+1,y)
和 (x+1,y+1)
。然后,通过将想交换的两个转到菱形上方,我们得到了交换任意邻项两个的方法。因此我们学会了构造任意大小的环。于是将 分解质因数,然后将 个点划分成组,分别对应 每个质因数的最高次幂即可。
P5037 抓捕
没怎么写过点权最短路就写了下。简单题,注意到点权最短路中一个点第一次被访问到时就是最优方案,因此当松弛时直接判一个点是否被访问过即可,单次最短路的复杂度为 。
P8518 [IOI2021] 分糖果
(2023.11.24 模拟赛)
扫描线对每盒糖果单独做,将区间操作转化为时间上的后缀加。
CF1515F Phoenix and Earthquake
感觉挺神秘的,,不是很会这种题。。
结论是随便构造一棵生成树,只要 就一定有解。
构造方法是从叶子往根做,如果一个叶子 的 ,那么直接合并,剩下的部分依然满足性质;否则放到最后做这个,相当于砍掉这个叶子,砍掉了一个节点但值减少不到 ,依然满足性质;并且最后合并时一定合法,这是由 保证的。
因此构造长度 的答案序列,随便 生成树,叶子大于等于 就加上其权值 并放在答案序列前面,否则放在后面。
[ARC080F] Prime Flip
首先,做差分,区间修改转化为修改两点。若差分后有奇数个点直接无解。
否则,任意两点之间都能够互相抵消。具体的:
- 差为奇质数:1步
- 差为偶数:2步
- 差为奇数合数:3步
解释下差为偶数为什么是 2 步:
差为 2 时,5-3=2;差为 4 时,7-3=4;否则,由哥德巴赫猜想在 以内的正确性易得。
然后,我们先在差为奇质数的点之间连边,观察到这是张二分图:奇数连偶数。然后跑最大匹配,最后两边先尝试 2 步的,如果还剩下一对则 3 步。
CF794D Labelling Cities
值一样的点能到点的集合(包括自身)必定一样,所以我们异或哈希,将能到点集合一样的点缩到一起。
然后发现这样缩完点之后如果合法,原图必定缩成了一条链,因此判链,直接按链的顺序赋值就好了。
CF1375F Integer Game
好玩题。假定三个数为 ,大小不重要。
第一步,加 ,假设加了的是 ,变为 。
第二步,加 ,假设加了的是 ,变为 。
第三步,加 ,容易发现此时后手无法操作。
同时我们也发现了先手必胜。
CF1493E Enormous XOR
首先,如果 最高为不同,答案必为 的位数个 ,构造显然。
然后,若位数相同,则必然选奇数个。
我们考虑如下事实:对于任意偶数 都满足 。
由于我们选奇数个,因此答案相当于一堆 异或上一个值。
因此异或上的值必定为 。具体的,若 为偶数且 ,则答案为上 ,否则为 。