【OI】ABC比赛中出现的Trick
ABC422
E 随机化
适用场景:判断性问题,答案命中率高,答案容易验证。
ABC428
E 树的直径的性质
对于树上任意一个节点 \(u\),在所有与 \(u\) 存在路径的节点中,距离 \(u\) 最远的节点 \(v\),必定是该树某条直径的两个端点之一。
ABC434
E 占点 \(\to\) 图上占点
我们发现,有用的点貌似只有 \(x+r\) 和 \(x−r\) 两个点,原来的点是什么,我们并不关心。
所以,我们把所有的可能的答案上的点取出来,对于每两个从同一个 \(x\) 中得到的点连一条边。
这个问题就变成了,对于每一条边,选择一个端点,并且染上色,并且要使得染色的点尽可能多。
很容易发现,这个图可能不是一个连通块,而是多个连通块组成的。
然而,因为每个连通块的边和其他的连通块中的边都是独立的,所以每个连通块都是独立的。
那么,我们分开连通块考虑树和图即可。
F 打乱
随机化打乱函数:
random_shuffle(t+1,t+1+n);
ABC436
E 排序问题 $\to $ 建图
给出一个非有序的排列,如何用最少的交换次数使其有序?
举个例子,我们给出一个排列 \(p\):
| 位置 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 元素 | 3 | 2 | 4 | 1 | 6 | 5 |
对于元素 \(i\),现在位于位置 \(x\),他需要去到的是位置 \(i\)。我们可以用边来表示这样的关系,也就是将每一组位置 \(x\) 和元素 \(i\) 连边。对于这一组数据,结果为:

这个图告诉了我们什么信息?
位置 \(1\) 上的元素要去位置 \(3\),位置 \(3\) 上的元素要去位置 \(4\),位置 \(4\) 上的元素要去位置 \(1\)。
位置 \(5\) 上的元素要去位置 \(6\),位置 \(6\) 上的元素要去位置 \(5\)。
位置 \(2\) 上的元素不需要动。
发现了什么吗?对于一个环 \(C\),我们只需要进行 \(|C|-1\) 次交换操作,就能完成对环内元素的排序。所有环排完序,整个排列就有序了。
我们按照上面的建图方法建图,即对于所有 \(i\),建边 \((i,P_i)\)。
第一次的交换操作,可以选择任意一个环中的任意两个元素进行交换,设建图后有 \(m\) 个环(不含单点),于是答案就是:
虽然意义上是有向图,但是由于题目性质,这里可以当无向图来建。
ABC437
F:绝对值 \(\to \max\)
整理得到:
这样可以在线段树上维护四个变量解决该题。
ABC438
F:统计的转化
如果题目要求的量成:\(\sum {kcnt_k}\),\(cnt_k\) 表示 \(k\) 的答案。可以转化为:\(\sum {c_k}\),\(c_k\) 为 \(\ge k\) 的答案。

浙公网安备 33010602011771号