
网络流
SaltyFishWei
这个作者很懒,什么都没留下…
展开
-
USACO 奶牛食品(网络流)
题目大意:FJ的奶牛们只吃各自喜欢的一些特定的食物和饮料,除此之外的其他食物和饮料一概不吃。某天FJ为奶牛们精心准备了一顿美妙的饭食,但在之前忘记检查奶牛们的菜单,这样显然是不能不能满足所有奶牛的要求。但是FJ又不愿意为此重新来做,所以他他还是想让尽可能多的牛吃到他们喜欢的食品和饮料。FJ提供了F (编号为1、2、…、F)种食品并准备了D (编号为1、2、…、D)种饮料, 他的原创 2015-08-04 21:48:13 · 1665 阅读 · 2 评论 -
HDU3605 Escape(最大流)
有n个人要移居m个星球,给出每个合适的星球,每个星球最多能容纳的人数,问是否所有人都可以移居。(1≤N≤105,1≤M≤10)(1\leq N\leq 10^5,1\leq M\leq10) 一开始还以为是最大流的裸题,结果TLE,翻了翻题解才知道原因:N的范围太大,那么多条边连完就TLE了。 首先要明确一点,这么多人肯定有许多人的选择是重复的,而且总方案数不超过2102^{10},根据这个,我原创 2016-03-14 20:41:00 · 1370 阅读 · 0 评论 -
HDU2883 kebab(最大流)
n位顾客要找老板烤肉串,第i个人要烤NiN_i串,每串烤TiT_i分钟,可以分成几个部分来烤,但是必须在SiS_i之后才能开始烤,而且必须在EiE_i之前烤完(个人认为题目描述不清,应该是时间区间 (Si,Ei](S_i,E_i] )。烤炉每分钟可以同时烤m单位的肉串(也就是说,每个人要烤肉的总量是Ni∗TiN_i*T_i单位)。问是否能够满足所有顾客的需求。 1≤N≤200,1≤M≤1000,1原创 2016-03-14 20:24:52 · 511 阅读 · 0 评论 -
HDU3338 Kakuro Extension(最大流)
给出一个大小为n∗m(2≤n,m≤100)n*m(2\leq n,m \leq 100)的数谜,在每个白格子里面填上1~9的数字,使得横向的和等于黑格子右上角的数,竖向的和等于黑格子左下角的数。 我的第一反应,搜索! 但是n,m有100那么大,估计也搜不过。 于是搜了搜题解,才知道网络流可以这样建模: 源点s连向黑格子右上角,容量为黑格子右上角的数,表示需要得到的和;黑格子的右上角分别向它对原创 2016-03-13 21:22:27 · 746 阅读 · 0 评论 -
HDU2732 Leapin' Lizards(最大流)
建图比较恶心的网络流模型。 有一个n*m(m没有直接给出)的网状迷宫图,还有一堆蜥蜴要从这个迷宫逃跑。蜥蜴站在一个柱子上面,每次跳跃的最大值是d(1≤d≤31\leq d\leq3),而且蜥蜴起跳离开柱子的时候柱子高度减一,跳到另外的柱子上高度不变,跳出地图时就算从迷宫中跑出去了,但是如果柱子高度为0,那只蜥蜴就挂了。第一张图中显示了柱子的分布,0表示没有柱子,柱子的高度貌似不超过3。第二张图表示原创 2016-03-13 12:45:56 · 296 阅读 · 0 评论 -
HDU3572 Task Schedule(最大流)
有n个任务,m个机器,对于第i个任务,必须在第si天之后开始,需要pi天完成且必须在第ei天之前完成。在一天中,一台机器只能干一个任务,一个任务只能被一台机器干。一个任务可以被中途打断,在不同的天用另外的机器完成。问你是否可以完成任务。(n≤500,m≤200,1≤pi,si,ei≤500)(n\leq 500,m \leq 200,1\leq p_i,s_i,e_i \leq500) 网络流的建原创 2016-03-13 12:19:52 · 354 阅读 · 0 评论 -
HDU3549 Flow Problem(最大流)
给你一个网络流的图,求出它的最大流,当个模板练习吧#include<cstdio>#include<cstring>#define MAXN 50using namespace std;int c[MAXN][MAXN],d[MAXN],vd[MAXN],flow,n,m,s,t,x,y,z;inline int Min(int a,int b){return a<b?a:b;}int原创 2016-03-13 12:05:11 · 263 阅读 · 0 评论 -
UVA10779 Collectors Problem(最大流)
白皮书上的练习题0 0 大意:Bob在与他的n−1(2≤n≤10)n-1(2 \leq n \leq 10)个朋友交换糖纸,一共有m(5≤m≤25)m(5 \leq m \leq 25)种糖纸。每个朋友手里有一些糖纸,可以一对一与Bob交换自己没有的糖纸,但是每个朋友只会交出自己的重复的糖纸。朋友之间不互相交换糖纸。问Bob最多能收集到多少种糖纸。 还是按照书上的方式建模吧,自己没有经验- -。原创 2016-03-11 11:56:23 · 480 阅读 · 0 评论 -
BZOJ3993 星际战争(最大流)
显然这是一个二分图。我们假设在k时间内能够摧毁所有机器人,那么第i个激光武器总共能够削弱k∗Bik*B_i的装甲值。也就是说,∑k∗Bi≥∑Ai \sum k*B_i \geq \sum A_i。那么构建一张网络流的图,s向激光武器连边,容量为k∗Bik*B_i,激光武器向对应的机器人连边,容量为inf,机器人向t连边容量为AiA_i。决策满足单调性,二分最短时间k;最后判断是否满流(我也不知道为什原创 2016-03-20 21:49:16 · 419 阅读 · 0 评论 -
BZOJ3996 线性代数(最小割)
目标: ans=min∑i=1NA1,i(∑j=1NA1,j∗Bj,i−C1,i)ans = min \sum_{i = 1}^{N} A_{1,i} (\sum_{j = 1}^{N}A_{1,j}*B_{j,i} - C_{1,i}) 化简得到 ans=min∑i=1N∑j=1NA1,i∗A1,j∗Bi,j−∑i=1NA1,i∗C1,ians = min \sum_{i = 1}^{N}\原创 2016-03-20 21:30:17 · 376 阅读 · 0 评论 -
BZOJ1266 上学路线route(最小割)
显然,要删掉的路径肯定在最短路径上面。所以在最短路上建网络流的图,此时边的容量变成了ci。我们要花最小的代价让1,n不连通,也就是求最大流。#include#include#include#include#define MAXN 510using namespace std;inline int Min(int a,int b){return a<b?a:b;}inline v原创 2016-03-20 21:12:29 · 458 阅读 · 0 评论 -
BZOJ1433 假期的宿舍(最大流)
是一张二分图,也可以用匈牙利算法实现。X部为人,Y部为床,S向要留校的和校外人员连容量为1的边,所有的床向T连边,只有校内人员有床。#include#include#include#define MAXN 110#define INF 0x3f3f3f3fusing namespace std;inline int Min(int a,int b){return a<b?a:原创 2016-03-20 21:07:07 · 329 阅读 · 0 评论 -
HDU3472 HS BDC(最大流+欧拉回路)
神奇的网络流建模。 有n(n≤1000)n(n\leq 1000)个单词,每个单词的长度都小于20,有的单词可以翻转。如果一个单词的尾字母和另外一个单词的首字母相同,那么两个单词可以拼接在一起。求问n个单词是否完全能够拼接在一起。 把每个单词抽象成两个点,一个点是首字母,一个尾字母,首字母和尾字母连边,如果单词可以翻转,连无向边。好了,现在问题变成了这个:给出一个混合图(既有有向边又有无向边),原创 2016-03-17 20:20:16 · 496 阅读 · 0 评论 -
HDU4183 Pahom on Water(最大流)
题目好长好难懂0 0,直接翻了翻网上的题解。 大意是这样的:有n(2≤n≤300)n(2 \leq n\leq 300)个点,每个点有个频率f(400.0≤f≤789.0)f(400.0 \leq f \leq 789.0)和坐标还有半径。如果点i能走到点j,那么以两个点为圆心半径分别为Ri,RjR_i,R_j的圆相交,即(Xi−Xj)2+(Yi−Yj)2−−−−−−−−−−−−−−−−−−−√<原创 2016-03-16 19:11:48 · 720 阅读 · 0 评论 -
BZOJ3931 网络吞吐量(最大流)
题目比较简单,但是到处是坑,建图也有点蛋疼。先求最短路,然后拆点跑最大流。 首先是图中是双向边不是单向边,而且给出的是点权,还需要判断在最短路径上的边的两个端点的先后关系,这无疑给建图带来了许多麻烦。最重要的是开long long不然过不了几个点。#include<cstdio>#include<cstring>#include<vector>#include<queue>#include原创 2016-03-16 17:01:37 · 531 阅读 · 0 评论 -
HDU3998 Sequence(DP+最大流)
已知一个长度为n的排列,先求出它的最长上升子序列的长度,设为k,再求长度为k的上升子序列有多少个。每个点只能经过一次。自认为这道题比较像最短路计数。类似的,先求出最长上升子序列(O(n^2)都可以),然后把每个点拆点,容量为1,因为只能走一次。源点s连向dp[i]=1的点,dp[i]=k的点连向汇点t,当dp[i]=dp[j]+1且a[j]#include#include#includ原创 2016-03-16 16:28:14 · 385 阅读 · 0 评论 -
HDU3081 Marriage Match II(最大流)
n个女孩和n个男孩要玩过家家的游戏。每个女孩要选择一个与她没有吵过架的男孩假装男朋友,如果这个女孩的朋友与某个男孩没有吵过架,那么这个女孩也可以找那个男孩假装男朋友。每次必须找不同的人,问这个游戏最多能进行多少轮。 把女孩放在一个并查集中然后连边,每个女孩向符合的男孩们连一条容量为1的边。假设这个游戏能进行k轮,那么源点s向每个女孩连容量为k的边,表示每个女孩都能找个k个男友,同理,每个男孩都向汇原创 2016-03-15 22:16:13 · 338 阅读 · 0 评论 -
NOI2006 最大获利(网络流)
题目描述:新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战。THU 集团旗下的 CS&T 通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研究、站址勘测、最优化等项目。 在前期市场调查和站址勘测之后, 公司得到了一共 N个可以作为通讯信号中转站的地址,而由于这些地址的地理位置差异,在不同的地方建造通讯中转站需要投入的成本也是不原创 2015-08-04 19:33:34 · 787 阅读 · 0 评论 -
HDU3416 Marriage Match IV(最大流+最短路)
城市A和B之间有一些有向边,求A,B之间的走最短路有多少种方法,即点可以重复走,而边不能。 首先求最短路,然后把在最短路上的边拖到新图里,容量为1,求最大流。判断一条边是否在最短路上:d1[edge[i].v]+d2[edge[i].v]+edge[i].w=d1[t]d1[edge[i].v]+d2[edge[i].v]+edge[i].w = d1[t] , d1[v]是起点到v的最短路,d2原创 2016-03-15 17:19:49 · 114 阅读 · 0 评论