随笔分类 -  图论--------------------------

摘要:【算法】有源汇上下界最小流 【题解】上下界 初看以为是最小覆盖,发现边可以重复经过,不对。 要求所有边都经过……那就下界为1,上界为inf的可行流。 源汇……S连入度为0的点,T连出度为0的点?(反正不亏) 后来发现网上说S向所有点连,所有点向T连,想想似乎会快一些。 最后……要求最小就最小流咯。 阅读全文
posted @ 2017-04-18 19:30 ONION_CYC 阅读(159) 评论(0) 推荐(0)
摘要:【算法】二分+有源汇上下界可行流 【题解】上下界 题解参考:[BZOJ2406]矩阵(二分+有源汇有上下界的可行流) #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int inf=0 阅读全文
posted @ 2017-04-18 16:54 ONION_CYC 阅读(498) 评论(0) 推荐(0)
摘要:【算法】二分+spfa 【题解】据说这个叫分数规划? 0-1分数规划 二分答案a,则对于任意的环有w/k≤a即w-ak≤0,若满足条件则a变小,否则a变大。 因为w=w1+w2+...+wk,所以变形为(w1-a)+(w2-a)+...+(wk-a)≤0。于是问题转化为在图中找负环。 不过由于spf 阅读全文
posted @ 2017-04-17 15:25 ONION_CYC 阅读(207) 评论(0) 推荐(0)
摘要:算法:网络流 题目:网络流24题(多按一下F5) 【最小路径覆盖问题】 关于输出路径,因为即使有反向弧经过左侧点也一定会改变左侧点的去向,若没连向右侧就会被更新到0,所以不用在意。 mark记录有入度的右侧点,然后从没入度的右侧点开始把整条路径输出来即可。 #include<cstdio> #inc 阅读全文
posted @ 2017-04-16 21:58 ONION_CYC 阅读(290) 评论(0) 推荐(0)
摘要:【题目】#6003. 「网络流 24 题」魔术球 【算法】最小路径覆盖(详细知识参考网络流总结) 【题解】(i+j)为完全平方数则连边,那么问题转化为添加尽可能多的点使得最小路径覆盖≤n(一条简单路径表示一根柱子) 从1开始枚举答案,每次可以直接在上一次的残余网络上建边增广(二分不优),直到最小路径 阅读全文
posted @ 2017-04-16 21:46 ONION_CYC 阅读(860) 评论(0) 推荐(3)
摘要:【题目】1738: 最小路径覆盖问题 【题解】网络流 关于输出路径,因为即使有反向弧经过左侧点也一定会改变左侧点的去向,若没连向右侧就会被更新到0,所以不用在意。 mark记录有入度的右侧点,然后从没入度的右侧点开始把整条路径输出来即可。 #include<cstdio> #include<algo 阅读全文
posted @ 2017-04-15 09:01 ONION_CYC 阅读(270) 评论(0) 推荐(0)
摘要:【网络流与二分图】专题链接 【图论】 图论-刘汝佳 完全三部图:图G可被分为三个顶点集,点集内的点相互均没有连边,不同点集的点之间相互均有连边。完全三部图的三元环个数是三点集点数的乘积。 无向无环图就是树。有向无环图DAG方便操作。 有环图可以tarjan缩点。 哈密顿回路(路径):每个点只经过一次 阅读全文
posted @ 2017-03-25 18:13 ONION_CYC 阅读(1215) 评论(0) 推荐(1)
摘要:【算法】有上下界网络流-无源汇(循环流) 【题解】http://www.cnblogs.com/onioncyc/p/6496532.html //未提交 #include<cstdio> #include<algorithm> #include<cstring> using namespace s 阅读全文
posted @ 2017-03-17 20:07 ONION_CYC 阅读(312) 评论(0) 推荐(0)
摘要:【题意】m个人修n辆车,时间为给定的表格a[i][j],一个人修完一辆才能修下一辆,求每辆车修完时间的总和。m<=9,n<=60。 【算法】最小费用最大流,二分图 【题解】将人放左边,将车放右边构成二分图,车向T连容量为1的边即可保证每辆车只修一次。 每个人有可能修多辆车,将每个人拆成n个点,每个点 阅读全文
posted @ 2017-03-08 19:59 ONION_CYC 阅读(292) 评论(0) 推荐(0)
摘要:【算法】最短路(floyd)+状态压缩型动态规划 【题解】 经典的TSP问题(货郎担问题):求最小权哈密顿回路(遍历全图点一次且仅一次)。本题稍作改动,先说原TSP问题解法:状压DP。 状态用二进制表示每个点是否走过(状态也包括最后走的点),状态转移关键在于每个点都有且只有另一个点指向它,所以先可以 阅读全文
posted @ 2017-03-05 13:52 ONION_CYC 阅读(396) 评论(0) 推荐(0)
摘要:【算法】二分图最大匹配(最大流) 【题解】按(i+j)奇偶性染色后,发现棋子跳到的地方刚好异色。 然后就是二分图了,对于每个奇点向可以跳到的地方连边,偶点不需连(可逆)。 所以题目要求转换为求二分图上最大独立集(对于每条边,至少有一个点不被选中)。 最大独立集=总点数-最小割 //代码略 //hzw 阅读全文
posted @ 2017-03-03 21:41 ONION_CYC 阅读(413) 评论(0) 推荐(0)
摘要:【算法】二分图匹配(最大流) 【题解】对i+j进行奇偶染色,就可以保证相邻两格异色。 然后就是二分图了,对相邻格子连边跑最大流即可。 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const i 阅读全文
posted @ 2017-03-03 20:06 ONION_CYC 阅读(322) 评论(0) 推荐(1)
摘要:【最大流】Dinic ★推荐:Dinic入门。 本质:网络流本质上是为了解决一类取舍问题,这类取舍问题无法得知最优策略的模式(无法DP),因此通过构造一些带容量的路径表示原题目容量,模拟水流在这些容量之间的取舍,从而可以利用网络流来解决取舍问题。 Dinic算法:bfs得到分层图,然后严格按照分层图 阅读全文
posted @ 2017-03-03 14:25 ONION_CYC 阅读(4332) 评论(5) 推荐(1)
摘要:【算法】网络流-最大流+最小费用最大流(费用流) 【题解】 第一问跑最大流。 第二问: 原始边相当于费用为0的边,再原图(跑过最大流的图)基础上添加带费用的边,容量为k(相当于inf)。 第一问最大流使用了哪条边对第二问没有影响,因为费用流肯定优先往费用为0的边(原始边)跑。 限流k?添加超级源向1 阅读全文
posted @ 2017-03-01 23:02 ONION_CYC 阅读(412) 评论(0) 推荐(0)
摘要:【算法】网络流-最小费用最大流(费用流) 【题解】与方格取数2类似 在S后添加辅助点S_,限流k 每条边不能重复走,限流1 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int in 阅读全文
posted @ 2017-02-27 22:08 ONION_CYC 阅读(415) 评论(0) 推荐(1)
摘要:【算法】最小费用最大流(费用流) 【题解】 费用流:http://www.cnblogs.com/onioncyc/p/6496532.html 本题构图: 在有限的k次行走中尽可能多的拿到数字,明显的取舍问题,可以用网络流解决。 一共只有k次行走,因此流量至多为k。 而在起点到终点的所有最大流应该 阅读全文
posted @ 2017-02-26 21:09 ONION_CYC 阅读(435) 评论(0) 推荐(0)
摘要:【算法】网络流-最大流(dinic) 【题解】 飞船有可承载人数限制,地球为源点,月球为汇点,人像水流一样从以飞船上限为容量的边流向汇点。 人在各站点都面临着上船与否的选择,难以用DP解决最优策略,于是这样的取舍问题可以使用网络流。 其实主要是看数据范围。 构图思路: 由于我们要计算时间,所以使变量 阅读全文
posted @ 2017-02-23 21:51 ONION_CYC 阅读(273) 评论(0) 推荐(0)
摘要:【算法】网络流-最大流(dinic) 【题解】 构图思路: 因为石柱高度是可以被消耗的,即一根石柱可通过的蜥蜴数量有限,取舍问题中这样表示容量的属性显然可以作为网络流中的边。 于是将一根石柱拆成顶部和底部,中间连一条容量为石柱高度的边。 超级源向有蜥蜴的石柱顶连一条容量为1的边(表示一只蜥蜴)。 可 阅读全文
posted @ 2017-02-22 22:01 ONION_CYC 阅读(363) 评论(0) 推荐(0)
摘要:【算法】网络流-最大流(dinic) 【题解】http://www.cnblogs.com/onioncyc/p/6496532.html #include<cstdio> #include<algorithm> #include<cstring> using namespace std; cons 阅读全文
posted @ 2017-02-20 21:37 ONION_CYC 阅读(361) 评论(0) 推荐(0)
摘要:【算法】最短路(spfa) 次短路 【题解】 正反跑两次SPFA,然后枚举每一条边,如果起点到一个端点的最短路+另一个端点到终点的最短路+长度 ≠ 最短路,则和答案比较,保存最小值。 #include<cstdio> #include<cstring> #include<algorithm> usi 阅读全文
posted @ 2016-12-20 21:03 ONION_CYC 阅读(252) 评论(0) 推荐(0)