zoukankan      html  css  js  c++  java
  • World Finals 2014 I

    题意

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

    做法

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

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

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

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

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

  • 相关阅读:
    做代码的曲线问题
    全书目录
    关于《Delphi源代码分析》的讨论
    说说“从编程到工程”专栏的由来
    CF285E Positions in Permutations
    CF264B Good Sequences
    CF115E Linear Kingdom Races
    CF633F The Chocolate Spree
    CF767C Garland
    CF559C Gerald and Giant Ches
  • 原文地址:https://www.cnblogs.com/Grice/p/13998705.html
Copyright © 2011-2022 走看看