tarjan训练
如你所见,我本打算在7月练这个,但是今天恰好放这个的课,所以提前练了
首先复习强连通、点双、边双、缩点、割点、2-SAT
P1653
强连通分量跑一遍
转化为DAG,连尽量少条双向边成为SCC
最优的方法是练入度为零的点和出度为零的点
这样连可以将入度出度都不为零的点一并搞掉
所以就是入度为零的点和出度为零的点的max
P2863
板子题
P4171
2-SAT板子题
CF1715D
经典套路拆位
拆位之后就是2-SAT模板
arc161e
随机化然后check
考虑使用2-SAT
考虑 $ s $ 与 $ a,b,c $ 相邻
显然有:
若 $ col_s != col_a $ ,那么 $ col_b == col_c == col_s $
$ col_s $ 是随机化搞出来的
按上式连边跑2-SAT即可
P4819
考虑缩点,那么每个SCC只需要随机一个询问,如果没事就可以将整个SCC查一遍
在DAG上,我们显然要尽量询问入度为0的点,设入度为零的SCC个数为 $ ans $
那么答案为 $ \frac{n-ans}{n} $
但是有特殊情况
如果对于某一个入度为零的SCC,它的大小为 $ 1 $ ,并且所连的所有SCC都能够被其它入度为0的SCC查到,那么它就不用查了。
具体地,只要先把其他的入度为0的SCC查了,最后只剩下这一个点,那么显然这个点就是杀手了。注意当大小大于1时,不知道哪一个是杀手,还是需要查询。
此时答案为 $ \frac{n-ans+1}{n} $
浙公网安备 33010602011771号