图论做题记录
图论
P9697 [GDCPC2023] Canvas
贪心的,2 放后面,1 放前面,我们就只考虑 1 和 2。我们要让 2 尽可能地多,那么就是 2 要放在 1 后面,如果有一次操作 x1 y2,另一次操作 z1 x2。显然要把第二次放在一后面。我们可以倒着来,如果一次操作是 \((l, 1, r, 2)\),则将 \(l\) 向 \(r\) 连一条有向边。这样子缩点以后就是从入度为 0 的点出发,就能遍历每条边,并且只有入度为 0 的点值为 1。有一个细节就是如果这里入度为 0 的点可能是一个强连通分量,我们可以随便钦定一个点为起点,但如果 22 的操作在前面覆盖了这个点,我们就选择这个点为起点,这样子起点权值也为 2 了。
AT_abc173_f
CF1903F
最大化最小考虑二分答案,这样可以改为判定性问题。点覆盖我们可以 2-sat,图上的每条边是一端不选另一端就必须选。考虑 \(mid\) 要是最小的编号差,那么选了 \(i\) 就不能选与 \(i\) 距离小于 \(mid\) 的点,这个是点对区间,线段树优化即可。