摘要:构图方式如下: 以row行号作为x集合顶点, col行号作为y集合顶点,根据题目给出的坐标x,y用边连接X,Y集合的顶点,求最小点覆盖数
阅读全文
摘要:转换成求最小点覆盖数 构图方式如下:横行的连续*方块作为X集合里的顶点,纵行的连续*方块作为Y集合的顶点,若两个方块相交,则用边把这两个顶点相连。然后求最小点覆盖数(求最大匹配),即为答案。 要注意构图后的顶点数。
阅读全文
摘要:转换成最大匹配。 每个横向的'o’和'#’块(必须包含'o’)作为X集合一个顶点,每个纵向的'o’和'#’块(必须包含'o’)作为Y集合一个顶点 当横向块和纵向块的交点的'o’时,二分图该两个顶点有边相连接。 这题因为下标不小心打错了,调了很久才ac,纳闷。
阅读全文
摘要:别人都说是赤裸裸的最小费用流,自己想了很久,都想不到如何做,最后看了别人解题报告才懂。 关键还是在构图和转化。源点是1,添加一个汇点,汇点到各个城市的边的容量是各个城市卖啤酒的钱的相反数。通过spfa求cost的最短路径,若最短路径的cost小于0,说明这条路径是赚钱的,否则是亏本的,算法停止。
阅读全文
摘要:求二分图最小权匹配,转换成最大权匹配。 方法一,初始化边e为负的权值,取反输出答案; 方法二,lx[]用min初始化,求slack时用max, 从最小值逐渐增大。 感觉二分图最大权匹配的思想与差分约束求最大值有些像。 差分约束求最大值一直保持d[u] <= d[v]+ e(u, v),而最大权匹配则是通过顶标,先从最大的权值边匹配,若不能构成完全匹配,就在相等子图里添加边。都是...
阅读全文
摘要:这题难点建图。 建图方式如下:要是在给定的s时间内能跑到洞穴(判断两点距离),那么那两个点是连通的,否则就不连通
阅读全文
摘要:这题也是赤裸裸的最大二分匹配。在最后加个判断即可。 注意,用cin会超时,要用scanf
阅读全文
摘要:赤裸裸的最大二分匹配入,直接套匈牙利算法模板
阅读全文
摘要:这题没有给出源点和汇点,需要自己添加。 添加一个与所有类型为p的点相连的源点和一个与所有类型为c的点相连的汇点,边的值为题目给的,而不是INF。 例外这题输入比较麻烦。
阅读全文
摘要:第一次写最大流,照着书上面敲。 用Edmonds_karp算法,每次通过bfs搜出一条增广路径加到流中,直到不能搜到为止。这题要注意有重边,多条重边要加在一起,用+=
阅读全文
摘要:这题没啥好说的,题目看了很久,才明白,原来是虫洞。用判断是否存在负权环,用bellman_ford即可
阅读全文
摘要:题目是求一个序列,要满足给定条件,求它的最少个数 设d[i]为在[0, i)区间内答案的个数,其中d[0] = 0 则对题目输入的a, b ,c有:d[b+1] – d[a] = c 题意隐藏的不等式有: 0 = d[i+1] – d[i] = 1, d[i] – d[0] = 0 因为是求最少个数,所以 以0为源点求最长路,答案就为d[n] – d[1] 1716,则把上面的c改...
阅读全文
摘要:设x[i] 为第i个营的人数,s[i] = x[1] + x[2] + … + x[i], s[0] = 0 则对于题目 Ci 有: 0 = s[i] – s[i-1] = Ci i, j, k有: s[j] – s[i-1] = k 还有: s[i] = 0 (1 = i = n) , 即 s[i] – s[0] = 0 这题求最小值,以0为源点求最长路
阅读全文
摘要:这题看了很久才看明白题意,就是求最短路,正向图,反向图求最短路,然后求和 这题数据规模很大,分别用了spfa和Dijkstra+heap实现,发现这两个算法差别不大,都在2s左右,Dij+heap貌似快spfa一些
阅读全文
摘要:设a[i] 为第i个小孩得到的糖果数,d[i] 为第i个小孩相对于第1个小孩的糖果数,即有: d[i] = a[i] – a[1], d[1] = 0. 题目输入的A B c 有: a[B] – a[A] = c 即有 (a[B] – a[1]) – (a[A] – a[1]) = c , d[B] – d[A] = c 题目是求最大值,就是求以1为源点的最短路。 注意:用spfa+...
阅读全文
摘要:这题的不等式比较难列,列了很久,也列不全,对那个8小时理解的不透。 设num[i] 为来应聘的在第i个小时开始工作的人数 r[i] 为第i个小时至少需要的人数 x[i] 为招到的在第i个小时开始工作的人数 根据题意有: 0 = x[i] = num[i] x[i] + x[i-1] + …+ x[i-7] = r[i] (题目中的连续工作8小时) 再设 s[i] = x[1] ...
阅读全文
摘要:这题加深我对差分约束的源点理解。 这题是判断图中是否存在环(用最短路或最长路), 开始用spfa, 狂WA,想不通,看了讨论说要添加一个超源点,添加了就AC了。 总结:用spfa算法判断图中是否存在环,要保证从源点开始,能到达各个顶点,这样才能保证差分约束里的各个不等式成立。因为要是源点到达不了某个顶点的话(即图是不连通的),那么从该顶点就无法入队,导致从该顶点出发的所有不等式,都没有得到检查...
阅读全文
摘要:设d[i]为 第i个工作开始的时间,根据题意有: FAS a b: d[a] + time[a] = d[b] FAF a b: d[a] + time[a] = d[b] + time[b] SAF a b: d[a] = d[b] + time[b] SAS a b: d[a] = d[b] 还有: d[i] = 0 即 d[i] – d[0] = 0 以0为源点开始搜...
阅读全文
摘要:这题再次对差分约束的超源点有了新的理解。 设d[i] = a[1] + …+a[i],根据题意有: d[si + ni] – d[si-1] = k + 1 d[si+ni] – d[si-1] = k - 1 即 d[si-1] – d[si+ni] = 1 – k 通过求最长路来判断图中是否存在正环。 这题可以通过加超源点,或者不加,加超源点不好想 使用bellman算法,这...
阅读全文