专栏文章

[ABC373G] No Cross Matching 题解

AT_abc373_g题解参与者 3已保存评论 2

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
2 条
当前快照
1 份
快照标识符
@miqc36hw
此快照首次捕获于
2025/12/04 02:21
3 个月前
此快照最后确认于
2025/12/04 02:21
3 个月前
查看原文

题意

给定二维平面上 nn 个红点和 nn 个黑点,将他们两两匹配形成若干条线段,使得任意两条线段不交,求方案。

分析

看到很多大佬用网络流做,但是我不太会。
首先多画几个图就不难发现不会出现无解的情况(一会给出的构造方案也可说明)。
先将未匹配的所有点按 xxyy 坐标双关键字排序。然后我们可以取 xx 坐标最小的点(若有多个,则取 yy 坐标最小的点)为特殊点,将其余所有未匹配的点与他连线,按线段斜率大小升序排序。由于不存在三点共线,因此每条线段的斜率均不同。
接着按顺序遍历这些点。当找到一个点使得这个点与特殊点的连线将未匹配的点分为上下两部分,且上下两部分中红黑点数量分别相同时,则连接这条线段,然后将上下两部分递归求解。容易证明这种构造方案一定符合条件。
时间复杂度 O(n2logn)O(n^2\log n)

评论

2 条评论,欢迎与作者交流。

正在加载评论...