摘要:题意:给出一些牛棚,开始牛棚边有一些牛,牛棚之间有路相连,走一条路会花费固定的时间。牛在牛棚边吃草,下雨时牛得躲进牛棚,每个牛棚容量有限。求在所有牛都能进牛棚时最少需要多少时间。这题和POJ2112相似,不过这题要拆点,把每个点拆成两个点,如果直接连原图中的点,是不对的。网上找了大神的图当二分到T = 70的时候,显然我们只加入了(2, 3)和(3, 4)两条无向边,因为只有这两对点间的最短距离小于等于70。但是从图中也可以看出,由于没有拆点,点2也可以通过这两条边到达点4,而实际上这是不允许的。也就是说我们所加的限制条件没有起到作用。由此可见,只有拆点才是正确的做法。然后这题还要注意64位。
阅读全文
摘要:题意:在一个会议室里有n种插座,每种插座一个;每个插座只能插一种以及一个电器(或者适配器); 有m个电器,每个电器有一个插头需要插在相应一种插座上;不是所有电器都能在会议室找到相应插座; 有k种适配器,每种适配器可以有无限多数量;每种适配器(a, b)可以把b类插座变为a类插座; 问最后有多少个电器无法使用。建图:(1) 源点到每种插座连一条权值为1的边(2) 每个电器到汇点连一条权值为1的边(3) m个电器中,连一条对应插座到该个电器的边,权值为1(4)k种适配器,连一条B到A的边,权值为inf题目意思最多也就300个点,怎么开n=300,就re了,开600多,就AC了,求过路大神指点 1.
阅读全文
摘要:题意:有一个电力网络,有发电厂,有用户,图提供的信息有发电厂和用户的容量,还有边,以及边的容量和流量,求解用户的最大使用量.先输入四个数 n np nc m,n表示的是总共的顶点数目,np表示发电厂的数目,nc表示用户的数目,m表示边数.再输入m条边的信息,再输入np个发电厂的信息,再输入nc个用户的信息(1)对输入的m条边建边(2)对源点到每个发电站建边(3)对每个用户到汇点建边 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define inf 0x7...
阅读全文
摘要:题意:有K个挤奶器,C头奶牛,每个挤奶器最多能给M头奶牛挤奶。求使C头奶牛头奶牛需要走的路程的最大路程最小。(1)首先跑一遍Floyd,求出任意两个点的最短距离(2)然后进行二分,对奶牛和挤奶器距离 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define inf 0x7fffffff 8 #define N 300 9 #define M 40000 10 int dis[N],gap[N],cur[N],pre[N]; 11 int size,head[N]; 12 in...
阅读全文
摘要:题意:现在有m个池塘(从1到m开始编号,1为源点,m为汇点),及n条水渠,给出这n条水渠所连接的池塘和所能流过的水量,求水渠中所能流过的水的最大容量.求1到n的最大流,套模板。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define inf 0x7fffffff 8 #define N 205 9 #define M 40510 int cur[N],pre[N],gap[N],dis[N];11 int size,head[N];12 struct Edge13...
阅读全文
摘要:题意: 有 M 个猪圈,每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依次来了 N 个顾客,每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。构图:(1) 将顾客看作源点和汇点以外的结点,并设一个源点和汇点(2)源点和每个猪圈的第一个顾客连边,边权是开始时猪圈中猪的数目(3)顾客j在顾客i之后打开猪圈,i,j 之间连一条权值为inf的边,因为迈克可以根据j的需要,从其他猪圈调猪过来,让j得到尽可能多的猪(4)每个顾客和汇点连一条权值为顾客要买猪的数目
阅读全文