World Finals 2014 I - Sensor Network

题意

给定\(n\)个点\((x_i,y_i)\)\(d\),选出最大点集,两两距离不超过\(d\)

做法

先转成二分图,可以看看这篇文章

于是问题转化成了求二分图的最大独立集,等价于最小点覆盖的补集

写这篇文章具体是想讲讲König定理
König定理:在二部图中,最小点覆盖=最大匹配

proof
令最小点覆盖\(=V\),最大匹配\(=E\)
\(V\ge E\):一个点最多覆盖一条匹配边
我们通过如下构造,得出一组\(V=E\)的最小点覆盖
对于左边所有未在匹配内的点,我们从其出发做遍历(遍历所有边),交替走(非匹配边-匹配边),并标记所有经过的点
可以将左边未标记的点与右边标记的点作为最小点覆盖(证明如下):
我们将上述选出来的点集称为\(P\)
(1):\(P\)覆盖了所有边(未被覆盖的边,当且仅当左端点被标记,右端点未被标记。若其为匹配边,与交替走矛盾;若其不为匹配边,从其出发一定会遍历这条边,从而右端点被标记,与假设矛盾)
(2):\(|P|=E\)(显然\(P\)均为匹配点,若同时存在于一条匹配边,两点要么同时被标记,要么均不被标记,故\(|P|\le E\)。由于覆盖了所有边,\(|P|\ge E\),所有\(|P|=|E|\)
得证

坑点:注意\(ans=1\)的情况,codeforces test 3设有卡点

posted @ 2020-11-18 11:06  Grice  阅读(99)  评论(0编辑  收藏  举报