题目大意:每一个01串中最多含有一个‘*’,‘*’既可表示0也可表示1,给出一些等长的这样的01串,问最少能用多少个这样的串表示出这些串.如:000.010.0*1表示000.010.001.011,最少只需用00*.01*这两个即可表示出来. 题目分析:如果有两个串只有一个位置上的数字不同,就可以用*代替这个位置上的数,这样就能把两个串用一个串表示出来.因为要找最少的数目,当然‘*’用的越多越好,也就是说只需找出最多的对数,然后再加上不用‘*’表示的串的数目便是最小值. 代码如下: # inc…
题意: 给m个长度为n的模板串,模板串由0和1和*三种组成,且每串至多1个*,代表可0可1.模板串至多匹配2个串,即*号改成0和1,如果没有*号则只能匹配自己.问:模板串可以缩减为几个,同样可以匹配原来m个串同样能匹配的所有串. 思路: 差点想不出是二分图匹配了. 将原来m个串所能匹配的串给取出来放到集合中(记得去重),编上号.并为他们黑白着色,源点到白色点有容量1的边,黑色点到汇点有容量为1的边,对于该白色点所能匹配的所有黑色点,都有一条容量为1的边.跑一次最大流,得知匹配对数,这些匹配的都只…
题意:每一个01串中最多含有一个‘*’,‘*’既可表示0也可表示1,给出一些等长的这样的01串,问最少能用多少个这样的串表示出这些串. 如:000.010.0*1表示000.010.001.011,最少只需用00*.01*这两个即可表示出来. 析:因为最多只有一个星,所以每个串最多能代表两个串,所以就是要两两匹配的尽量多,也就是二分匹配喽,要注意,给的串可能会有重复的. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000&quo…
题意:有两台机器,上面有多个工作区域,有多个任务,分别可以在两台机器的某一个区域上完成,两台机器一开始都在0区域上工作,每次更改区域,都会重新启动一次,让我们求出最小的重启次数. 思路:将两个区域连线,使用二分图,求出最大匹配数,容易想明白,正好就是最小重启的次数. 注意:0一开始就已经完成,不应该加入到匹配序列. 代码如下: #include<iostream> #include<algorithm> #include<queue> #include<cstdi…
POJ 2724 Purifying Machine 题目链接 题意:这题题意有点没看懂.看了别人的题解, 给出m串长度为n的01串. 有些串中可能包括,这种串能够表示两个串,为1 和为0. 反复的算一种.比方题目中01 100 011 就代表了四个01串 001 101 100 011 如今我们须要消灭掉全部的01串,消灭方式有两种: 1一次消灭一个串. 2假设两个串的区别仅仅有一位的话能够同一时候消灭这两个串. 问最少多少次操作能够消灭全部的01串 思路:把存在的二进制数保存下来,然后去重.…
题意 给定m个长度为n的01串(*既表示0 or 1.如*01表示001和101).现在要把这些串都删除掉,删除的方法是:①一次删除任意指定的一个:②如果有两个串仅有一个字符不同,则可以同时删除这两个.求最少要多少次可以删完,并且同一个串不能删两次. 思路 我们用点表示一个串,如果两个串之间只有一个字符不同,那么这两个串之间连接一条,最大匹配数就是节省的次数. 因为每个串中的1为奇数的串之间是不能匹配的(不可能只有1个不同),同理,偶数也是.所以,可以按照1的奇偶性把数据分成2份,所以是一个二分…
点击打开链接 Konig定理:二分图的最小顶点覆盖数 = 二分图的最大匹配数 题意: 在N*N的网络中有K颗小行星.小行星i的位置是(Ri, Ci).如今有一个强力的武器可以用一发光束将一整行或一整列的小行星消灭.想要利用这个武器消灭全部的小行星最少须要几发光束? 分析: 以小行星的左右坐标建立二分图,就能够看出是求二分图的最小顶点覆盖数. #include <cstdio> #include <cstring> #include <vector> #include &…
HDU 1068 :题目链接 题意:一些男孩和女孩,给出一些人物关系,然后问能找到最多有多少个人都互不认识. 转换一下:就是大家都不认识的人,即最大独立集合 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <math.h> #define init(a) memset(a,…
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2444 Problem Description There are a group of students. Some of them may know each other, while others don't. For example, A and B know each other, B and C know each other. But this may not imply t…
题意: 有猫C个和狗D个,有V个投票人,每个人喜欢猫讨厌狗或则喜欢狗讨厌猫! 求最多能满足多少投票人. 分析: 两个投票者矛盾的话就连一条边,总数减去最大匹配数/2就是要求的答案 // File Name: ACM/HDU/2768.cpp // Author: Zlbing // Created Time: 2013年08月16日 星期五 15时14分15秒 #include<iostream> #include<string> #include<algorithm>…