随笔分类 -  图论

摘要:装盒子基准时间限制:1秒 空间限制:131072KB 分值:160有n个长方形盒子,第i个长度为Li,宽度为Wi,我们需要把他们套放。注意一个盒子只可以套入长和宽分别不小于它的盒子,并且一个盒子里最多只能直接装入另外一个盒子 (但是可以不断嵌套),例如1 * 1 可以套入2 * 1,而2 * 1再套... 阅读全文
posted @ 2015-08-04 11:35 再见~雨泉 阅读(404) 评论(0) 推荐(0)
摘要:1 //#pragma comment(linker, "/STACK:1677721600") 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #incl... 阅读全文
posted @ 2015-07-23 21:00 再见~雨泉 阅读(765) 评论(0) 推荐(0)
摘要:据说A,B,C题都比较水这里就不放代码了D:Facility Locations然而D题是一个脑经急转弯的题:有m行,n列,每个位置有可能为0,也可能不为0,问最多选K行是不是可以使得每一列都至少有一个0,其中代价c有个约束条件:These costs satisfy a locality prop... 阅读全文
posted @ 2015-05-25 13:38 再见~雨泉 阅读(247) 评论(0) 推荐(0)
摘要:Destroy Tunnels 原来早忘记了离散里含有这么一个叫传递闭包的东西 矩阵A的闭包B = A U A^2 U A^3 U ... 所以这里直接如果A[i][j]!= 0,建边i->j跑一遍强连通,看是不是只有一个强连通分量,>=2说明不能所有点都!=0输出exists 否则说明所有i->j 阅读全文
posted @ 2015-05-13 02:20 再见~雨泉 阅读(209) 评论(0) 推荐(0)
摘要:题目大意是说有一个B矩阵,现在A是一个空矩阵(每个元素都为0),每次操作可以将A矩阵相邻的两个元素同时+1,但是有个要求就是A矩阵的每个元素都不可以超过K,求这个的最小值解题思路是这样的,新建起点与奇点(i != j)连K条边,第i条边的权值为(i - B)^2 - (i - 1 - B)^2 = ... 阅读全文
posted @ 2015-03-28 22:27 再见~雨泉 阅读(356) 评论(0) 推荐(0)
摘要:看了这道题,然后重新开始练习自己的刚敲不久的网络流,发现还是难以一遍敲得完整啊,,,,,调了。。。遍,改了。。。遍,测了。。。遍,交了,,,遍,总算是A了,,不简单啊然后试着用了其他两种算法EK和dinic都试着去练习一下,慢慢A了,,,真是不简单有木有题目大意是这样的,有一些小偷打算从城市S到城市... 阅读全文
posted @ 2014-08-21 00:50 再见~雨泉 阅读(278) 评论(0) 推荐(0)
摘要:这几天敲了几道最大流的问题,发现网络流真是模板算法啊。。。。敲来敲去敲了几遍,基本每遍都敲得让人灰心,但同时也感受到了网络流的强大所在,这是我做网络流的第一题,,本以为看了一遍小白书的代码差不多理解就可以A掉一题的,没想到打击不是一点点的少啊。。。。。首先小白书将的邻接矩阵存边,这里必须用邻接表,而... 阅读全文
posted @ 2014-08-21 00:32 再见~雨泉 阅读(434) 评论(0) 推荐(0)
摘要:这几天做了一个最短路的复习,都是最简单的最短路dijkstra,floyd,A_Star,SPFA地址http://vjudge.net/contest/view.action?cid=50053#problem/GA:HDU 2544最基本,贴代码 1 #include 2 #include ... 阅读全文
posted @ 2014-07-23 09:21 再见~雨泉 阅读(217) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3635题目意思是说n个球在n个城市。每次操作把编号i的球所在的城市的所有的求全部一道另一城市B每次询问访问编号i的球的城市,以及这个城市的球的数量,以及这个球被移动了多少次。方法就是用一个结构体记录每个球的父节点和移动次数以及这个节点的球的个数(球和城市可以堪为一个整体),然后每次操作就行。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 ... 阅读全文
posted @ 2013-12-01 00:45 再见~雨泉 阅读(218) 评论(0) 推荐(0)
摘要:题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2819 题目大意很明确,交换图的某些行或者是某些列(可以都换),使得这个N*N的图对角线上全部都是1. 这里有一点需要说明,就是说题目的交换,其实是将原来图的某一行移到最后图的某一行,而不是指先交换两行,得到一个新图,再交换新图的两行。感觉这里比较坑。 这里先说明的一点就是,如果通过交换某些行没有办法的到解的话,那么只交换列 或者 既交换行又交换列 那也没办法得到解。其实个人感觉这个可以用矩阵的秩来解释,所有的对角线都是1,所以也就是矩阵的秩就是N,所以秩小于N就无解。另外,根据矩阵的性质,任意交换矩 阅读全文
posted @ 2013-08-17 23:46 再见~雨泉 阅读(2156) 评论(0) 推荐(0)
摘要:最少顶点覆盖 = 二分图最大匹配证明见 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 #... 阅读全文
posted @ 2013-08-17 22:00 再见~雨泉 阅读(214) 评论(0) 推荐(0)
摘要:裸的二分图匹配题目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) (... 阅读全文
posted @ 2013-08-17 21:33 再见~雨泉 阅读(191) 评论(0) 推荐(0)
摘要:题目大意:有一个城镇,它的所有街道都是单行的,并且每条街道都是和两个路口相连。同时已知街道不会形成回路。 你的任务是编写程序求最小数量的伞兵,这些伞兵可以访问(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 ... 阅读全文
posted @ 2013-08-17 20:44 再见~雨泉 阅读(194) 评论(0) 推荐(0)
摘要:题目大意就是说有两台机器,分别有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 ... 阅读全文
posted @ 2013-08-17 19:26 再见~雨泉 阅读(240) 评论(0) 推荐(0)
摘要:链接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的有向边... 阅读全文
posted @ 2013-08-17 18:48 再见~雨泉 阅读(230) 评论(0) 推荐(0)
摘要:昨天看了下差分约数系统的含义,其实就是如果有n个变量在m个形如aj-ai>=bk条件下,求解的此不等式的方法。 而这种不等式的解法其实就是转化为图论的最小路的算法求解的。我们将上面的不等式边形后得到aj>=ai+bk正好就可以看做是从ai到aj权值是bk的一条路径最短的边。这样一来,只要依照题目的条件写出一系列这样的不等式,也就是相当于按照题意增加了一些合法的边,也就完全转化为了最短路的算法。 再看这道题,题目说[ai, bi]区间内和点集Z至少有ci个共同元素,那也就是说如果我用Si表示区间[0,i]区间内至少有多少个元素的话,那么Sbi -Sai >= ci,这样我们就构 阅读全文
posted @ 2013-08-16 11:30 再见~雨泉 阅读(4753) 评论(0) 推荐(0)
摘要:IDOriginTitleProblem AHDU 2544 最短路 Problem BHDU 3790 最短路径问题 Problem CHDU 3665 Seaside Problem DHDU 1869 六度分离 Problem EHDU 1874 畅通工程续 Problem FHDU 1317 XYZZY Problem GHDU 4360 As long as Binbin loves Sangsang Problem HPOJ 1847 Tram Problem IPOJ 1062 昂贵的聘礼 题目就挂在这里了,还有F,G,H没有搞出、有一个大的教训就是以后不管有没有重边,一律都考虑 阅读全文
posted @ 2013-08-13 02:04 再见~雨泉 阅读(210) 评论(1) 推荐(0)
摘要:今天做了一个最短路的练习,前面几道都还比较水,最后一道不久以前做过,而且还纠结过很长一段时间,方法记下了,所以做出来了。可是回头看看自己的代码,发现似乎全部都是照搬的白书的代码。想要重新看看白书加深一下了解,却发现,有关最短路的好多东西都还没有了解过,比如说图的邻接表的使用以及优先队列的优化都还不曾了解。再往前一看,却发现最小生成树的方法居然也不记得了。所以又重新看了看书,加深一下了解,下面把有关最短路的问题先简单整理一下,待以后慢慢添加。 首先是最小生成树,他指的是权值最小的没有环的图。而解最小生成树就有一个最经典的方法,那就是Kruskal。下面是伪代码先将所有的边按照权值的从小到大... 阅读全文
posted @ 2013-08-13 00:36 再见~雨泉 阅读(264) 评论(1) 推荐(0)
摘要:这道题其实最简单的方法就是打表,直接DFS会超时,那就先运行一遍,找出1~10的值,打表即可,这里提供DFS和打表的数据DFS:(白书上的)TLE 1 #include 2 #include 3 int vis[3][25],ans,n; 4 5 void dfs(int cur) 6 { 7... 阅读全文
posted @ 2013-08-04 12:15 再见~雨泉 阅读(1194) 评论(0) 推荐(2)
摘要:这是第一次全部做出来的依次练习了,有一些都是做过两遍了的,但是还是错了几回,更多时候我还是应该多注意下细节,就好像章爷笑我的一样,像什么vis[]标记没清0,什么格式错误,还有什么题目没看清,还是的注意一下了。地址: 8.1搜索练习Problem A POJ 2488A Knight's Journ... 阅读全文
posted @ 2013-08-01 15:30 再见~雨泉 阅读(274) 评论(0) 推荐(0)