二分图的最大独立集

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

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

 

 题意翻译过来是这样  

给你一个集合 { 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 有指正的地方可以告诉我

 

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

 

posted @ 2019-08-04 10:18  摸鱼选手LLF  阅读(428)  评论(0编辑  收藏  举报