20
http://pjudge.ac/contest/1288/problem/21777
考虑 A 性质怎么做,把每种颜色从 \(x\) 轴上面还是下面连过去视作 \(0/1\) 两种状态,然后优化建图跑二分图染色即可。
如果在一般情况沿用上面的做法,对合法性的刻画会变得十分复杂,因为两个点之间的连边可能会从整个数轴的左边或右边绕过去。但是我们发现,如果可以从左边绕过去,那也一定可以改成从右边绕过去,而不改变整个连边方式的合法性,如下图。

这启发我们,上面做法里的刻画方式是很不对的,因为经过这样一次改变,\(0/1\) 状态就变了。
考虑在这样一次改变里,什么东西没有变。从一个点延申出的线段方向是没有变的。所以设 \(x_i\) 表示点 \(i\) 延申出的线段方向,经过一些手玩,所有对合法性的刻画都可以写成如下形式:
- 若 \(l_i<l_j<r_j<r_i\),则 \(x_{l_j}=x_{r_j}\);
- 若 \(l_i<l_j<r_i<r_j\),则 \(x_{l_j}\not=x_{r_i}\)。
然后就做完了。

浙公网安备 33010602011771号