上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 32 下一页
摘要: 这个题目,做之前不知道什么事差束约分,看完题目上床睡觉,想了半个小时,想到了要判断一个有向图有没有负环。第二天起来再想,觉得是判断有没有环(包括负环,正环,0环),但是不确定,要真的是这样的话,要权值来干什么,直接拓扑排序就好了,然后不确定,找了解题报告瞄一下,个个都是差束约分,然后没看其他内容,直接去学差束约分,看算法导论和网上的资料看了一个小时,懂了,就写,其实就是差束约分的模板题说说思路和题目:给你一个长度为n的序列,从下标1到n标号,然后给你m个连续的子序列,让你求和,和要大于或者小于给定的k,如果这m个不等式都能成立,就输出成功,只要有一个不成立就输出不成立。sample中第一个就是 阅读全文
posted @ 2012-11-29 19:13 Titanium 阅读(711) 评论(0) 推荐(0) 编辑
摘要: 【转】关于差分约束(转载)个人认为比较好差分约束系统(本文假设读者已经有以下知识:最短路径的基本性质、Bellman-Ford算法。) 比如有这样一组不等式: X1 - X2 <= 0X1 - X5 <= -1X2 - X5 <= 1X3 - X1 <= 5X4 - X1 <= 4X4 - X3 <= -1X5 - X3 <= -3X5 - X4 <= -3 不等式组(1) 全都是两个未知数的差小于等于某个常数(大于等于也可以,因为左右乘以-1就可以化成小于等于)。这样的不等式组就称作差分约束系统。 这个不等式组要么无解,要么就有无数组解。因为如 阅读全文
posted @ 2012-11-29 15:35 Titanium 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 最小费用最大流:无向图(所以必须用邻接表)+当流量为D时的最小费用(即限制流量在D,求最大流)题意:就是给你一个无向图,给出所有的无向边和它们的单位费用(题中说了不会有平行边),然后给出D,K,K是指每条无向边的容量固定为K,然后问当流量为D时最小费用是多少,如果流量无法得到D这个数值,那么就输出Impossible. 解决这个问题的方法就是限制流量,加一个新的源点(或者汇点,道理一样),增加一条有向边,就是新的源点指向原本的源点,这条有向边的容量就是D,费用是0,然后求新源点到汇点的最小费用最大流,可以知道,求出来的最大流一定是小于等于D的(同样是最大水流取决于最细水管的道理,水流必须从新的 阅读全文
posted @ 2012-11-28 23:28 Titanium 阅读(685) 评论(0) 推荐(0) 编辑
摘要: 其本质说白了就是一句话——水流的最大流量取决于最细的水管的容量如果一条弧的两个顶点分别属于顶点集S和T(一个顶点在S,另一个在T),那么这条弧称为割CUT(S,T)的一条割边。从S指向T的割边是正向割边;从T指向S的割边是逆向割边。割CUT(S,T)中所有正向割边的容量和称为割CUT(S,T)的容量。不同割的容量不同。定理一:如果f是网络中的一个流,CUT(S,T)是任意一个割,那么f的值等于正向割边的流量与负向割边的流量之差。推论1:如果f是网络中的一个流,CUT(S,T)是一个割,那么f的值不超过割CUT(S,T)的容量。推论2:网络中的最大流不超过任何割的容量 定量2:在任何网络中,如果 阅读全文
posted @ 2012-11-27 21:47 Titanium 阅读(642) 评论(0) 推荐(0) 编辑
摘要: 二分图判定+最大匹配(匈牙利算法)解答看 hrbeu 哈工程The Accomodation of Students 阅读全文
posted @ 2012-11-26 23:47 Titanium 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 经典题目,HDU上也有,给定一个无向图,先判断是否为二分图,不是输出No,是的话,输出最大匹配,算是一个模板题1.一个图不存在奇环则是二分图2.二分图最大匹配用匈牙利算法#include <cstdio>#include <cstring>#define N 210int g[N][N]; //无向图领接表int mat[N],cov[N],vis[N],c[N];int n,m;void input(){ memset(g,0,sizeof(g)); for(int i=1; i<=m; i++) { int u,v; scanf("%d%d" 阅读全文
posted @ 2012-11-26 23:45 Titanium 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 题意:就6种型号的衣服,然后给你n件衣服,n一定是6的倍数,也就是每种类型的衣服的件数是一样的,然后给m个人,每个人能穿两种型号的衣服,给你每个人穿衣的信息,然后判断是否每个人都能找到衣服穿很显然是二分图最大匹配,但是这里有个小问题,就是一种衣服有多件,可能被多个人穿,和二分图匹配有点不同,在最大匹配中每个点是只会出现一次的,这个问题要解决不难就是把相同的衣服拆成多件不同的衣服处理,但是建图的时候就要注意多处理一下,建图完毕后就是纯粹的匈牙利算法//问题一看就是二分图匹配,不过一个种衣服会有多件要怎么处理呢,就把多件相同类型的衣服当做不同衣服来处理//衣服按照1到6编号,如果第i种衣服有重复的 阅读全文
posted @ 2012-11-26 22:42 Titanium 阅读(584) 评论(0) 推荐(0) 编辑
摘要: 其实所谓的“反色”就是改变mat的标记,mat其实不是叫路径(当然在增广的过程中)它的确起到了“记录前驱”的作用,但是,每趟增广之后,其实他代表的就是匹配例如 1和6匹配 那么mat[1]=6; mat[6]=1; 它不是前驱的作用所以严格来讲,增广的过程,是回到它之前的匹配点mat[i],然后要mat[i]重新找一个匹配点,只要能找到一个就立即记录并返回不要再找了,如果这个找不到了,那么其实已经找不到增广路了所以对于一个新的起点A,它一定能找到一个匹配点B(除非它是一个孤立点一条边都没有),如果还没有被匹配过,那么它就据为己有,如果已经被匹配了,那么它还是据为己有,并且强行要求B之前的匹配. 阅读全文
posted @ 2012-11-26 21:21 Titanium 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n个城市的坐标,任意两个城市都是有通路的(无向的)要你算出所有点之间最短路(显然就是Floyd),然后要满足一个条件,任意两点的直接连线不能大于10,所以我们在建图的时候要算出任意两点的直接相连距离,如果有的大于10,我们将它变为INF,相当于这两点间是没有通路的。做完这个处理后就是直接的Floyd输出的意思是,要保证任意两点间都是连通的(也就是任意两点的最短路都不是INF,因为没有通路的话最后最短路会为INF),如果不能满足的话就输出失败如果能满足,也就是所有两点间的最短路都知道,那么找到最大的那个,输出,保留四位小数水题啊水题啊水题啊!!!!!!…………………………题目给的那个公 阅读全文
posted @ 2012-11-24 22:51 Titanium 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 算是模板题,给定一个有向图,顶点从0到n-1编号,必须从0开始出发,问是否存在负环一开始写了一个Bellman-Ford,超时,然后就放弃了,写了个spfa的bfs版本,过了,然后又写了一个spfa的dfs版本,wa,然后改了一个下午,还是wa然后上网找了一下代码,发现很多人写的都是BF算法,看了一下自己的一样,怎么会超时呢??后来才发现,我读错题意了,我本来是理解为只要图中有负环就好了,所有枚举了所有的顶点作为源点去BF,所以才超时,现在是规定了0作为源点,所以就AC了然后就把spfa的dfs版本改了一下,不要枚举所有源点,规定0为源点,然后就AC了,再修改了一些细节地方,跑出了最好成绩0. 阅读全文
posted @ 2012-11-24 19:51 Titanium 阅读(606) 评论(0) 推荐(0) 编辑
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 32 下一页