摘要:
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2819 题目大意很明确,交换图的某些行或者是某些列(可以都换),使得这个N*N的图对角线上全部都是1. 这里有一点需要说明,就是说题目的交换,其实是将原来图的某一行移到最后图的某一行,而不是指先交换两行,得到一个新图,再交换新图的两行。感觉这里比较坑。 这里先说明的一点就是,如果通过交换某些行没有办法的到解的话,那么只交换列 或者 既交换行又交换列 那也没办法得到解。其实个人感觉这个可以用矩阵的秩来解释,所有的对角线都是1,所以也就是矩阵的秩就是N,所以秩小于N就无解。另外,根据矩阵的性质,任意交换矩 阅读全文
摘要:
最少顶点覆盖 = 二分图最大匹配证明见 http://hi.baidu.com/keeponac/item/111e3438988c786b7d034b56 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 using namespace std;15 #define eps 1e-1516 #define MAXN 50517 #... 阅读全文
摘要:
裸的二分图匹配题目poj.org/problem?id=1469不解释: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 using namespace std;15 #define eps 1e-1516 #define MAXN 30517 #define INF 100000000718 #define MAX(a,b) (... 阅读全文
摘要:
题目大意:有一个城镇,它的所有街道都是单行的,并且每条街道都是和两个路口相连。同时已知街道不会形成回路。 你的任务是编写程序求最小数量的伞兵,这些伞兵可以访问(visit)所有的路口。像这样建二分图,最后由定理 DAG图的最小路径覆盖数=节点数(n)- 最大匹配数(m)这样也就只需要求最大匹配数上诉结论的证明见:http://www.cnblogs.com/jackiesteed/articles/2043934.html 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 ... 阅读全文
摘要:
题目大意就是说有两台机器,分别有n,m种模式可以调节,有k个工作,某一个工作i可以在第一台机器的a[i]模式下或第二台机器的b[i]模式下工作,两台机器的初始模式为0,问如何分配这K件工作使得两台机器更换模式的次数最少。并难求最少次数。这里有一个定理: 二分图的最少顶点覆盖 =二分图的最大匹配证明见http://hi.baidu.com/keeponac/item/111e3438988c786b7d034b56感觉讲的不错,仔细看看,慢慢就会明白。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include ... 阅读全文
摘要:
链接1275Cashier Employment题目大意就是说有一些人来应聘一个超级市场的工作,每个人的应聘的起始时间在0~23时之间,而超市在时间i需要R[i]个工作人员,而每个人的工作时间都是8小时,问最少需要多少人使得超市一天24小时满足超市的工作人数的需要。设工作时间为1~24时,S[i]表示前i个小时所需要的工作人数的最小值,那么结果就可以表示成0为起点,24为终点的最短路。下面是约束不等式:0= R[i] (8= R[i] (0= 0 (1= -t[i] (1= R[i] (8= R[i] - S[24] (0= W就可以建一些由B指向A的权值为W的有向边... 阅读全文