扫描线还不是很熟啊--不管是从想的方面还是代码实现的方面-- 关于这题,考虑一条平行于\(y\)轴的扫描线从左到右扫描每一个圆,因为只有相离和内含两种关系,只用在切线处扫描即可 我们设上半圆为1,下半圆为-1,当前遍历到的圆为\(i\).然后把每个圆弧按照和这条扫描线的交点的纵坐标从小到大排序,然后找每个下半圆的前驱,设这个前驱对应的圆为\(j\). 如果这个前驱为上半圆,即这两个圆相离,状态相同 如果这个前驱为下半圆,即圆\(i\)内含于圆\(j\),状态相反 嘛--不理解的话直接上图好了,紫…