随笔分类 - 图论 网络流 费用流
摘要:第一题 题意:给定n*m网络,定义两个棋子在同行同列则相互攻击,同时要求两个棋子的行和列不能一小一大,求满足条件的最大摆放的方案数。 题解:ans=C(max(n,m),min(n,m)),就是在max中取min个数字的组合,组合内排序构成一种方案。 #include<cstdio> #includ
阅读全文
摘要:算法:网络流 题目:网络流24题(多按一下F5) 【最小路径覆盖问题】 关于输出路径,因为即使有反向弧经过左侧点也一定会改变左侧点的去向,若没连向右侧就会被更新到0,所以不用在意。 mark记录有入度的右侧点,然后从没入度的右侧点开始把整条路径输出来即可。 #include<cstdio> #inc
阅读全文
摘要:【网络流与二分图】专题链接 【图论】 图论-刘汝佳 完全三部图:图G可被分为三个顶点集,点集内的点相互均没有连边,不同点集的点之间相互均有连边。完全三部图的三元环个数是三点集点数的乘积。 无向无环图就是树。有向无环图DAG方便操作。 有环图可以tarjan缩点。 哈密顿回路(路径):每个点只经过一次
阅读全文
摘要:【题意】m个人修n辆车,时间为给定的表格a[i][j],一个人修完一辆才能修下一辆,求每辆车修完时间的总和。m<=9,n<=60。 【算法】最小费用最大流,二分图 【题解】将人放左边,将车放右边构成二分图,车向T连容量为1的边即可保证每辆车只修一次。 每个人有可能修多辆车,将每个人拆成n个点,每个点
阅读全文
摘要:【最大流】Dinic ★推荐:Dinic入门。 本质:网络流本质上是为了解决一类取舍问题,这类取舍问题无法得知最优策略的模式(无法DP),因此通过构造一些带容量的路径表示原题目容量,模拟水流在这些容量之间的取舍,从而可以利用网络流来解决取舍问题。 Dinic算法:bfs得到分层图,然后严格按照分层图
阅读全文
摘要:【算法】网络流-最大流+最小费用最大流(费用流) 【题解】 第一问跑最大流。 第二问: 原始边相当于费用为0的边,再原图(跑过最大流的图)基础上添加带费用的边,容量为k(相当于inf)。 第一问最大流使用了哪条边对第二问没有影响,因为费用流肯定优先往费用为0的边(原始边)跑。 限流k?添加超级源向1
阅读全文
摘要:【算法】网络流-最小费用最大流(费用流) 【题解】与方格取数2类似 在S后添加辅助点S_,限流k 每条边不能重复走,限流1 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int in
阅读全文
摘要:【算法】最小费用最大流(费用流) 【题解】 费用流:http://www.cnblogs.com/onioncyc/p/6496532.html 本题构图: 在有限的k次行走中尽可能多的拿到数字,明显的取舍问题,可以用网络流解决。 一共只有k次行走,因此流量至多为k。 而在起点到终点的所有最大流应该
阅读全文
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡
阅读全文