【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\) 个环(不含单点),于是答案就是:

\[\sum_{i=1}^m {|C_i|\choose2} \]

虽然意义上是有向图,但是由于题目性质,这里可以当无向图来建。

ABC437

F:绝对值 \(\to \max\)

\[|x-x_1|+|y-y_1|=\max\{ x-x_1+y-y_1 ,x_1-x+y-y_1,x-x_1+y_1-y,x_1-x+y_1-y \} \]

整理得到:

\[\max\{ (-x_1-y_1)-(-x-y) ,(x_1-y_1)-(x-y),(y_1-x_1)-(y-x),(x_1+y_1)-(x+y) \} \]

这样可以在线段树上维护四个变量解决该题。

ABC438

F:统计的转化

如果题目要求的量成:\(\sum {kcnt_k}\)\(cnt_k\) 表示 \(k\) 的答案。可以转化为:\(\sum {c_k}\)\(c_k\)\(\ge k\) 的答案。

ABC448

E:化简式子

\[[\frac{N}{M}]\mod K =[\frac{N \mod (MK)}{M}]=[\frac{r}{M}] \]

posted @ 2025-12-23 21:38  shaotianyu  阅读(40)  评论(0)    收藏  举报