随笔分类 -  网络流

摘要:https://www.byvoid.com/blog/noi-2008-employee/因为每个志愿者的服务日期都是连续的,设 xi 为第 i 种志愿者的数量,所以列出线性规划式子之后,两两相减,每个 xi 都会只在两个式子中出现,一个为正一个为负,与费用流的线性规划式一致,所以可以转化为费用流... 阅读全文
posted @ 2014-11-17 22:51 贝尔摩德 阅读(133) 评论(0) 推荐(0)
摘要:题目是一个矩阵,每行每列的数字的和都有一个上限,问是否存在可行方案,并且可行方案是否唯一。第一问比较简单,行列建图,s到每个行节点容量为该行上限,每个列节点连接到t,容量为该列的上限,求最大流,如果满流则有可行方案。第二问就是判断最大流是否唯一,就是在原图中找一个环(经过一条边后不能马上走反向边),... 阅读全文
posted @ 2014-10-02 15:10 贝尔摩德 阅读(144) 评论(0) 推荐(0)
摘要:对于每个点拆点成为两个点a,b,连接a到b的上界为1,下界为1的边,保证用过一次且仅一次。然后若点u可到达点v,则连接即可。建成了一个上下界网络,将下界拆出去,求最大费用最大流就好。#include #include #include using namespace std;const int N=... 阅读全文
posted @ 2014-08-13 20:30 贝尔摩德 阅读(165) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/julyana_lin/article/details/8070949题意: n个点,每个点有初始的值 ,三种 通道,1、隧道:可以用来躲避,有固定的容量,也可以用来传递。2、普通的道路,可以无限的通过。3、桥(最多有12座):不花费的话能通过一人,修之后可... 阅读全文
posted @ 2014-07-15 20:26 贝尔摩德 阅读(190) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/jianglangcaijin/archive/2012/10/06/2713375.html题意:有m科课程需要学习,每个课程有一个基础分数,每学习该课程一个时间单位,该课程的分数就增加1分。现在有n天的学习时间,每天有K个单位时间,并且每天可以学习的... 阅读全文
posted @ 2014-07-15 20:23 贝尔摩德 阅读(156) 评论(0) 推荐(0)
摘要:转载自 http://blog.csdn.net/qq564690377/article/details/17100011题意:在一个有向图当中,现在每一条边带有一个容量,现在有K个人在起点,需要到终点去吃饭,询问这K个人最后一个人到达食堂的最小时间是多少。想法:联想到普通的网络流,那么我们网络流可... 阅读全文
posted @ 2014-07-12 15:57 贝尔摩德 阅读(254) 评论(0) 推荐(0)
摘要:很常见的想法了= =#include #include #include using namespace std;const int N=400;const int MAXE=200000;const int inf=10&&d[u]+edge[j].w=0) printf("Oh, I lose ... 阅读全文
posted @ 2014-07-12 14:09 贝尔摩德 阅读(222) 评论(0) 推荐(0)
摘要:题意就是问能否将给定的几个单词全部连接起来,两个单词能连接是当前一个单词的最后一个字母等于后一个单词的首字母。还有一些单词反向也没有关系。建图,每输入一个单词,只看他的首尾字母,连接一条首字母到尾字母的有向边,如果他可以反向,那么再反向建立一条边,即该边是无向边。然后就是一个混合欧拉了。还有一个注意... 阅读全文
posted @ 2014-07-12 10:46 贝尔摩德 阅读(282) 评论(0) 推荐(0)
摘要:题目大意就是有n个发电机,每个发电机有l到r个档位可供选择,每个档位的输出功率是已知的,另外还有一些限制条件,形式为xu ≤ xv + d,表示发电机u的档位要小于v的档位加d,d是一个已知的整数。求n个发电机的最大功率。假设没有最后那个限制条件,那么对于每个发电机i拆点成l-1,l。。。到r相邻两... 阅读全文
posted @ 2014-07-11 15:34 贝尔摩德 阅读(461) 评论(0) 推荐(0)
摘要:转载==题意:每个' . '有一个姑娘, E是出口,'.'是空地 , 'X‘ 是墙。 每秒钟每个姑娘可以走一步(上下左右) 每秒钟每个出口只能出去一个人 给定n*m的地图, 时限T 问所有姑娘能否在T秒内逃生,若能输出最小值,不能输出"impossible" 思路: 显然是二分答案+网络流判可行。 ... 阅读全文
posted @ 2014-05-06 17:41 贝尔摩德 阅读(191) 评论(0) 推荐(0)
摘要:题解copy别人的。。Candy【题目大意】有N颗糖果和M个小孩,老师现在要把这N颗糖分给这M个小孩。每个小孩i对每颗糖j都有一个偏爱度Aij,如果他喜欢这颗糖,Aij = k,否则Aij = 1。小孩i觉得高兴当且仅当ΣCij×Aij >= Bi,j=1,2,…,N,若他分得了糖j,Cij = 1... 阅读全文
posted @ 2014-04-22 14:28 贝尔摩德 阅读(164) 评论(0) 推荐(0)
摘要:构图比较裸,只是上下界费用流不好做= =源点向每个行节点连接下界为1上界为INF费用为0的边,每个列节点向汇点连接下界为1上界为INF费用为0的边,行节点向列节点连接下界为0上界为1费用为该点值的边,求一最小费用可行流就好。#include#include#include#include#inclu... 阅读全文
posted @ 2014-04-17 17:29 贝尔摩德 阅读(215) 评论(0) 推荐(0)
摘要:首先,这种相邻格子的问题都会联系到二分图:横纵坐标和为偶数的在左边,横纵坐标和为奇数的在右边。构图如下:原点和左边的点相连接,容量是其权值。右边的点和汇点连接,容量是其权值(如果某点为必选的,则权值为INF)。如果左边的点x和右边的点y相邻,连接x,y容量为2 * (x & y)。每个割都代表一种方... 阅读全文
posted @ 2014-04-17 09:12 贝尔摩德 阅读(123) 评论(0) 推荐(0)
摘要:这道题挺难的,在网上见到这段分析:对原矩阵黑白染色1 2 34 5 67 8 9A={1,3,5,7,9}B={2,4,6,8}矩阵中每个点可以取两个值中的任意一个,或者都不取。根据这一个条件,我们可以把一个点拆分成两部分,k,k'。对A集合中的点,k为金蛋,k'为银蛋。B集合中的点,k为银蛋,k'... 阅读全文
posted @ 2014-04-16 16:34 贝尔摩德 阅读(144) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std;#define maxn 1000#define INF 100000struct Edge{ int from, to, cap, flow;};int n, m, s, t;vecto... 阅读全文
posted @ 2014-03-31 13:04 贝尔摩德 阅读(127) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std;#define maxn 1500#define INF 100000struct Edge{ int from, to, cap, flow;};int n, m, s, t;ve... 阅读全文
posted @ 2014-03-29 16:14 贝尔摩德 阅读(133) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std;#define maxn 230#define INF 100000struct Edge{ int from, to, cap, flow;};int n, m, s, t;vector... 阅读全文
posted @ 2014-03-29 16:12 贝尔摩德 阅读(146) 评论(0) 推荐(0)
摘要:原图中相邻点两两连边,容量为1,源点连接狼的节点,容量为INF,羊的节点连接汇点,容量为INF,这样求最小割就可以了。#include #include #include #include using namespace std;#define maxn 50000#define INF 10000... 阅读全文
posted @ 2014-03-27 12:52 贝尔摩德 阅读(164) 评论(0) 推荐(0)
摘要:题意:求一个序列最长上升子序列的长度以及有多少个最长上升子序列。#include #include #include #include using namespace std;#define maxn 10000#define INF 100000struct Edge{ int from, ... 阅读全文
posted @ 2014-03-26 13:36 贝尔摩德 阅读(160) 评论(0) 推荐(0)
摘要:题意:在一个网络中求最大流和一条流量最大的路的流量的比值。主要是求最大流量的路,深搜一遍,数组q[ i ]表示从s到i点的最大流量,不断更新即可。#include #include #include #include using namespace std;#define maxn 1500#def... 阅读全文
posted @ 2014-03-26 12:52 贝尔摩德 阅读(175) 评论(0) 推荐(0)