• 二分图的最大独立集


    今天是开通博客的第一天  ,现在参加牛客暑假多校训练赛, 恰好在补网络流二分图的题,就顺便把比赛这道题搬出来了

    提示(本题需要的前序知识 ,网络流算法 ,二分图匹配,最大匹配 ,最小边覆盖,最大独立集 ,最小点覆盖)

     题意翻译过来是这样  

    给你一个集合 { a1,a2,a3……an}

       给你一个n 代表集合的内元素的数量

    将每个元素转化为二进制表示,问有多少个元素至少有两个二进制位是不同的   (求出这些元素组成的最大集合)  (集合内两两元素都满足这个条件)

    首先  {至少有两个二进制位不同}的反命题为 {只有一个二进制位相同}

    所以我们建立一个图 

    点:{a1,a2, ……an}

    边: 若点a与点b只有一个二进制不同,则连边。 

    接下来证明连出来的图是一个二分图  

     首先 有一条路径   从a指向b  中间经过多个点 

    a->x1->x2->-x3->……->xn->b;

    a与x1有一位不同 x1与x2有一位不同 

    (因为所有的值  都是 distinct) 所以 a与x2有两位不同  

    所以  a与xn有n位不同  

    所以  在一条路径中  第t和t+2个点 一定没有连边  证毕

    经过上述思考  我们建图 答案为这个图的最大独立集

    并且跑一遍二分图算法求出最大匹配    

    |最大独立集|=总点数-|最大匹配|   (因为在二分图中,|最大匹配|=|最小点覆盖|)

    我的QQ 642325110 有指正的地方可以告诉我

    至于这些前序知识 大家可以查阅资料  或者我有空会补上这些知识的介绍

  • 相关阅读:
    线程
    管道,数据共享,进程池
    进程锁,队列,JoinableQueue
    网络基础之 并发编程之进程,多路复用,multiprocess模块
    网络基础之 tcp/ip五层协议 socket
    python基础之 026 包以及包的引入
    python基础之 025 模块加载与import的使用
    python基础之正则表达式 re模块
    python基础之 序列 pickle&json
    【SoapUI】SoapUI projects 01
  • 原文地址:https://www.cnblogs.com/acmLLF/p/11297377.html
Copyright © 2020-2023  润新知