UVaLive 3645 Objective: Berlin (最大流)】的更多相关文章

题意:已知n(n <= 150)个城市和m(m <= 5000)个航班,每个航班有出发地.到达地.乘坐人数.起飞时间和降落时间(时间用时和分表示),求从一个指定城市出发,去往另一个指定城市在规定的最晚时间前(包括最晚时间)可以到达的最大人数(换航班的间隔至少需要30分钟). 分析: 1.首先最大流模板中是不考虑时间因素的,从一个点分别向不同的方向出发是同时的,所以不能以城市为最大流模板中的顶点. 2.为了考虑时间因素,以航班为顶点,以城市为边,将同一个航班拆成两个点i与i + m(拆点法),则…
题意:有n个城市,m条航班.已知每条航班的起点和终点,还有每条航班的载客量.出发时间.到达时间.并且要求在任何一个城市(起点.终点除外)都至少要有30分钟的中转时间,求起点到终点的最大客流量. 析:把每个航线看成一个点,然后拆成两个点,然后如果两个航线能够到达,并且时间不超的话,就连一条边,然后加一个源点和汇点,分别向开始和结束城市进行连线,容量无限大. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #inc…
最大流 .以航班为节点进行最大流. 容量限制进行拆点. 如果时间地点满足可以建一条边. 具体看代码.变量名被修改过了.一开始的变量名可能比较容易看懂 但CE了.可能与库里的变量重复了. AC代码 #include <map> #include <set> #include <list> #include <cmath> #include <ctime> #include <deque> #include <stack> #…
题意:给定一些航班,每个航班有人数,和起始终止时间,每次转机要花半小时,问限制时间内最多能有多少人从起始城市到终点城市. 析:差不多是裸板网络流的最大流问题,把每个航班都拆成两个点,这两个点之间连接一条流量为这个航班的容量,然后再暴力去查看能不能连接,如果能, 那么就连接一条容量无限的边,然后在源点和汇点加一个无限的容量边. #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #…
题目大意:有n个城市m条航线.给出每条航线的出发地,目的地,座位数,起飞时间和到达时间(所给形式为HHMM.记得转化),再给出城市A和B.和到达城市B的最晚时间.如今问一天内最多有多少人能从A飞到B,能够在其它城市中转 解题思路:将飞机票拆点,拆成i–>i + m,容量为座位数. 接着推断一下.航线之间的连线 假设航线的起点是A的话,那么就和超级源点相连,容量为INF 假设航线的终点是B且到达时间小于等于最晚时间.那么连线,容量为INF 假设航线i的终点和航线j的起点同样.且航线i的到达时间+3…
题目 Source https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3602 Description The administration of a well-known football team has made a study about the lack of support in international away games.…
题目大意:有n个城市,m条航班.已知每条航班的起点和终点,还有每条航班的载客量.出发时间.到达时间.并且要求在任何一个城市(起点.终点除外)都至少要有30分钟的中转时间,求起点到终点的最大客流量. 题目分析:将航线视作一个点,如果航线u能经过某城市中转到航线v,则从u连一条弧到v.构造好图之后拆点,将点u拆成u和u’,对于任意一个u,都连一条弧从u到u’,容量为航线上的载客量:对于节点u,从u’向u邻接的节点v连一条弧,容量为无穷大:增加源点s,从s向起点为出发点的航线u连一条弧,容量为无穷大,…
题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4899 题意: 给你n,m,m对关系 m次输入,a,b,表示a喜欢b的书 问你在随意安排数的情况下,是否每个人都能得到自己想要的书 题解: 也就是最大匹配数量,可以用最大流求或者匈牙利 每本书只能用一次,建边S-a a'-T 有关系 a - b' 建图,跑最大流 #…
题意就是 给一个50 * 50的矩阵 然后给出每行每列元素的和 和一个初始矩阵 矩阵中有些是未知,有些是已知 然后我们求目标矩阵就是把能确定的元素的值求出来,实在不能确定的就置为-1 所有矩阵元素的值在0-100之间 看到范围很小. 第一反应是求一个最大流 先把已经给出的元素都从每行每列的和中减掉. 然后左边为行结点,右边为列结点 然后源点向行结点连边 列结点向汇点连边 行和列中如果对应的元素未知就连一下,流向上限是100 然后这样我们就得到了一个可行解 但是可能有多解怎么办 对于一个可能多解的…
There will be several test cases in the input. Each test case will begin with a line with three integers: N A B Where N is the number of teams (1N1, 000), and A and B are the number of balloons in rooms A and B, respectively (0A, B10, 000). On each o…