题意:一个人要给女孩子们拍照,一共 n 天,m 个女孩子,每天他至多拍 d[i] 张照片,每个女孩子总共要被至少拍 g[i] 次.在第 i 天,可以拍 c[i] 个女孩子,c[i] 个女孩子中每个女孩子在当天被拍的次数是 [li,ri],求最多可以拍多少张照片,以及每天每个可以拍的女孩子被拍了多少张照片. 析:一个很明显网络流,很容易建图,建立一个源点 s 和汇点 t,然后 s 向每一天连一条边,容量上界上 d[i],每个女孩子向汇点连一边,下界是 g[i], 上界是无穷大,然后对于每一天拍的从…
题意:给定 n 个点,m 条有向边,如果有向边的标号是1的话,就表示该边的上界下界都为容量 ,如果有向边的标号为0的哈,表示该边的下界为0,上界为容量 ,现在问,从 1 到 n 的最小流是多少,并输出每条边的流量. 析:首先吐槽一下这个题,我数组开小了,还有网络流写错一个符号,为什么都是PE,而不是 WA 或者是RE,很不能理解. 这个题目是一个有源有汇有上下界最小流,首先处理所有输入的边,记录每个点的下界流入的流量与流出流量的差,如果这个差大于 0,那么就从超级源点 s连一条 i 的边,容量就…
题意: 给定n个点和m条边, 每条边有流量上下限[b,c], 求是否存在一种流动方法使得每条边流量在范围内, 而且每个点的流入 = 流出 分析: 无源汇有上下界最大流模板, 记录每个点流的 in 和 out , 然后如果一个点 i 的in > out,  从源点i连一条边到in, out > in 就从i 连一条边到 v. #include <cstdio> #include <iostream> #include <cstring> #include &l…
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3442 题目大意: 一个屌丝给m个女神拍照,计划拍照n天,每一天屌丝给给定的C个女神拍照,每天拍照数不能超过D张,而且给每个女神i拍照有数量限制[Li,Ri],对于每个女神n天的拍照总和不能少于Gi,如果有解求屌丝最多能拍多少张照,并求每天给对应女神拍多少张照:否则输出-1. 解题思路: 有源汇带上下界的最大流,我也是第一次写. 说下建图: ①源点S到第i天流量为D[…
题意:要在n天里给m个女生拍照,每个女生有拍照数量的下限Gi,每天有拍照数量的上限Di,每天当中每个人有拍照的上限Lij和Rij.求在满足限制的基础上,所有人最大能拍多少张照片. 分析:抛开限制,显然是一道最大流的问题,需要新建虚拟源点s和虚拟汇点t.加上上下界限制后就是有源汇点的上下界最大流问题. 要求解这个最大流,首先得保证上下界可行流有解.新增一个超级源点ss,超级汇点tt.点[1,n]视作n天,[n+1,n+m]视作m个女生.由源点s向[1,n]分别建容量为Di的弧,由于下界是0,所以不…
题意:给一个矩阵,给出每行每列之和,附加一些条件,如第i行第j列数必需大于(小于)多少. 思路题解:矩阵模型,模拟网络流,行.列标号为结点,构图,附加s,t,s连行标(容量上下限每行之和(必需以这个 值全部送过去),每个列标连向t(容量上下限每列之和)),其他每个行到列都有边(有限制的按限制 来,无限制的自己添加).由于s->网络->t,若有解,总流量f必为 矩阵所有数之和,故添加边t-S,容量上下线为矩阵和sum,这样保证了每个点出入流相等,满足流量平衡, 转化为无源无汇有上下线可行流问题,…
题目: 射命丸文要给幻想乡的居民照相,共照n天m个人,每天射命丸文照相数不多于d个,且一个人n天一共被拍的照片不能少于g个,且每天可照的人有限制,且这些人今天照的相片必须在[l,r]以内,求是否有可行解,如果有则输出最多照片数,并且输出每天每个可以被照的人的被照的照片数. 题解: 建个源点向每天连容量为[0,d],每天向每个人连[l,r],每个人向汇点连[g,INF] 我们已经建好了一个有源汇的有上下界网络 我们再从T向S连[0,INF]就变了一个无源汇! 这个时候我们套用无源汇模板即可 #in…
Description Gensokyo is a world which exists quietly beside ours, separated by a mystical border. It is a utopia where humans and other beings such as fairies, youkai(phantoms), and gods live peacefully together. Shameimaru Aya is a crow tengu with t…
ZOJ 3229 Shoot the Bullet 题意:此生无悔入东方 上下界最大流 spj挂掉了我也不知道对不对,把代码放这里吧以后正常了可能会评测一下 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; const int N=2005, M=4e5+5, INF=…
有源汇带上下界最大流 在原图基础上连一条汇点到源点流量为inf的边,将有源汇网络流转化为无源汇网络流用相同方法判断是否满流,如果满流再跑一边源点到汇点的最大流就是答案 例题:Shoot the Bullet 东方文花帖 题目传送门 #include <bits/stdc++.h> using namespace std; /* freopen("k.in", "r", stdin); freopen("k.out", "w&…