网络流
文章平均质量分 80
冷月残星
这个作者很懒,什么都没留下…
展开
-
最大流,Floyd(UNIX插头 uva 753)
给n个插座,m个设备和k种转换器(n,m,k一开始跟着紫书上的提示做的。每个设备连到源点,容量为1。每个插座连到汇点,容量为1。转换器有无限多而且一个设备的插头可以经过任意多的转换器后再插入插座中。因此我们不需要知道转换的过程,只需要知道某个设备的插头类型最后是否能转换成某个插座的类型即可。因此建立一个转换器的有向图,类型为点,转换器为有向边。然后通过Floyd算法得到此图的闭原创 2016-07-14 14:12:48 · 756 阅读 · 0 评论 -
最短路,网络流(HDU 5294,Tricks Device)
最短路+网络流算是很经典的套路了。但是自己还是一直WA得不明所以。原因是自己对edmondskarp算法的不理解。首先,这道题的图是无向图,这点从题干中可以很容易的得到。跑完Dijkstra后,我们得到了一个最短路树。最早听说最短路树的概念是在大白书P330上。意思是Dijkstra算法跑完以后会得到一个p数组,表示s到v的最短路径中v的前一个节点。显然p数组能表示一个原创 2017-05-01 17:43:32 · 589 阅读 · 0 评论 -
Dijkstra,平面图最大流(动物园大逃亡,LA 3661)
学会了用最短路求平面图的最大流。http://blog.sina.com.cn/s/blog_60707c0f01011fnn.html代码#include#define rep(i,a,b) for(ll i=a;i<=b;i++)using namespace std;typedef long long ll;const ll maxn = 2e6;con原创 2017-02-12 12:41:20 · 469 阅读 · 0 评论 -
最大流,欧拉回路(混合图的欧拉回路,uva 10735)
关于欧拉图http://blog.csdn.net/y990041769/article/details/9371591一些参考http://www.hardbird.net/uva-10735-euler-circuit%E6%B7%B7%E5%90%88%E5%9B%BE%E7%9A%84%E6%AC%A7%E6%8B%89%E5%9B%9E%E8%B7%AF/找的是欧拉回路而转载 2016-08-05 19:36:27 · 756 阅读 · 0 评论 -
分治法,最小权完美匹配(巨人和鬼,Ants,uva 1411)
分治法解法:感觉能用分治法解的问题都有自相似性吧。就是说把大的情况按某种方式切成几个小的情况,这些小的情况和大的情况是相似的。如果满足这个条件,那么最简单的情况的解答方案是显然的。我们只需要考虑好如何合并多个小情况即可。跟快速排序的思想很像啊。看紫书P227吧,讲的详细。最小权完美匹配解法:黑点和白点个数相同,每个黑点要找一个白点,应该要想到二分图完美匹原创 2016-08-20 16:42:58 · 3772 阅读 · 2 评论 -
最大费用循环流(帮助小罗拉,uva 1659)
用紫书上的第一种方法做的。本来要找环使得分最大(即最大费用循环流),为了用最小费用流建模,就边权取反,然后找负环增广。(转换成最小费用循环流)以下下有两个要点:1、循环流没有最大流这个说法事实上在算法运行时也只是找负圈,然后就对负圈进行增广,不存在源点与汇点,也不会对s-t进行增广,也就不会有所谓的最大流。但其实算法运行完毕后是能够算出一个flow来的,这个flow叫啥我也不知原创 2016-08-06 21:02:40 · 2239 阅读 · 0 评论 -
最大流,最小割(水塘,uva 1515)
最大流是由最小割决定的,一个木桶能装多少水是由最短的那块木板决定的,一条路单位时间最多能通过多少辆车是由最窄的那个路口决定的。http://blog.csdn.net/jijijix/article/details/51941014盗个图http://www.cnblogs.com/jerryRey/p/4761919.html一些参考容量表示断开这条弧的费用。转载 2016-08-01 23:28:52 · 451 阅读 · 0 评论 -
最大流(矩阵解压 uva 11082)
给一个R行N列的矩阵(1for(int i=R;i>=1;i--) A[i]=A[i]-A[i-1];for(int j=C;j>=1;j--) B[j]=B[j]-B[j-1];可以得到第i行或第j列所有元素之和。建立一个二分图,每行对应一个X节点,每列对应一个Y节点,然后增加源点s和汇点t。对于每个Xi,从s到Xi连一条弧,容量为A[i]-C;对于每个Y原创 2016-07-14 20:14:55 · 891 阅读 · 0 评论 -
最大流,二分法,拆点法(士兵移动 uva 12264)
给n个点的无权无向图(n0则此点归你且上面有ai个属于你的士兵。保证至少有一个属于你的点与敌方的点相邻。你可以让你的每个士兵最多移动一次,每次可以待在原地或者去到相邻的属于你的领地,但每个点至少要留1各士兵,使得最薄弱的关口尽量坚固。关口是指与敌方点相邻的点,薄弱与坚固分别指兵少与兵多。我参考了这篇博客上的一些讲解。http://www.voidcn.com/blog/a197p/ar转载 2016-07-14 00:27:25 · 1890 阅读 · 1 评论 -
最小费最大流,拆点法(海军上将 uva 1658)
有向加权图,从1到v找两条不相交路径,使权值和最小。通过拆点法使得两条路径没有公共点(不相交)。把2到v-1的每个节点拆成i和i’两个节点,中间连一条容量为1,费用为0的边。如下图,图1为拆点前,图2为拆点后,每条边的容量为1。显然图1可能成为两条路径相交处。图2两点间边的容量为1,使得最多只能有一条路径穿过此点。附上渣代码#include#inc原创 2016-07-14 01:38:27 · 792 阅读 · 0 评论 -
贪心,暴力,网络流,匹配(MZL's City,HDU 5352)
这个题目可以抽象成以下问题。有一个M层的架子,每层最多放K颗珍珠,你有N个不同的珍珠,每颗珍珠都只能放在某些特定的层里,问怎么安排放置的方案,使得珍珠尽量往下层放(尽量往下层放的概念很模糊,准确一点讲就是字典序最小)。思考之后觉得这是一个很动态的问题,考虑过动态规划,但是感觉不怎么好定义状态,更别提状态转移了。然后就考虑转贪心,思考了很多办法,最后想到了一个暴力的方法,能保证正确性原创 2017-07-10 10:00:39 · 421 阅读 · 0 评论