网络流
木落淮南,雨晴雲夢
这个作者很懒,什么都没留下…
展开
-
P2765 魔术球问题(网络流,隐式图构造)
P2765 魔术球问题这道题的思路实在是太罕见了,所以发一篇blog从某一新放入的球开始看起1.放入原来的柱子上2.放入新的柱子并将每个点进行拆点,然后将可以组成平方数的两个树相连,在每次跑网络流的时候记录流的流向即可,如果流量为0,则表明1行不通,只能新来第一个柱子#include <bits/stdc++.h>#include <ext/pb_ds/assoc_container.hpp>#define inf 0x7fffffff#define ll long原创 2022-04-03 21:55:58 · 280 阅读 · 0 评论 -
P2402 奶牛隐藏(二分网络流)
P2402 奶牛隐藏思路比较新颖第一眼看到这个题的时候,直接反应是拆点+费用流,直接就写,后来发现思路假了。首先为什么不是费用流,因为两个不同点的奶牛可以同时移动,这种情况下产生的费用就不是费用和而是费用max。举个例子,奶牛A 1->2 , B 2->3 这个过程是同时的,产生的费用显然不是和。正解应当是二分+最大流+floyd,通过floyd将距离作为建边的限制条件,然后跑最大流,二分check。另外比较坑的一点,就是初始化不能1e18,因为200*1e16=2e18#inc原创 2022-03-28 23:03:41 · 226 阅读 · 0 评论 -
上下界费用流模板
P4553 80人环游世界朋友中学的模拟纯模板题#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long//#define int long long//#define double long double#define re register int#define void inline void#define eps 1e-18//#define mod 1e9+7//#define ls(p原创 2021-11-26 21:33:16 · 465 阅读 · 0 评论 -
P1264 K-联赛(最大流)
P1264 K-联赛题意:已知每个队的胜负情况,且每个队还剩下一些比赛,如ai,ja_{i,j}ai,j就表示iii和jjj还有ai,ja_{i,j}ai,j次比赛,求可能得到冠军的队伍这道题算是网络流中的大水题了,直接枚举每个队就行了对于一支队伍就直接让他赢得所有比赛,然后是其他队伍赢得比赛没有这个数多,那么就变成了网络流问题。设最大能赢数为xxx,那么其他每支队伍能赢数量不可以大于x−wix-w_ix−wi,且每一场比赛必有一方获胜,所以这个题就是二分图带权匹配。建图方式:源点连向一个原创 2021-08-15 14:22:53 · 174 阅读 · 0 评论 -
2021牛客暑期多校训练营 3 C Minimum grid(二分图,费用流,最大流,km(待补))
C Minimum grid译文:有一个 n×n 网格,它的一些位置包含非负整数 a_{i,j} ,而其他位置不包含任何内容。现在,给定一个空的数字网格,以及它的一些位置(这些位置必须包含一个非负整数,而其他位置必须不包含任何内容),以及每行 b_i 中 ai,j 的最大值,ai 的最大值, j 在每一列 c_i 中,您需要找到一种方法来填充网格中的非负整数以满足这些条件。由于有多种可能的方法,因此要求您找到 ∑ (1≤i,j≤n) a i,j 的最小值,即该网格中数字的总和。保证有一种方法可以在原创 2021-07-25 18:50:33 · 109 阅读 · 0 评论 -
P2053 [SCOI2007]修车 (费用流建模3)
P2053 [SCOI2007]修车这道题是P2050 [NOI2012] 美食节的简化版,由于之前那道题做的有点久了,加之当时写博客比较随意,这次就当是补上次的博客还是那句话,网络流的精髓在于如何建图,这道题也是思路:先看极限情况:即只有一个师傅的情况,从第1辆车修到第n辆车,客户等待的时间是A1,A1+A2,A1+A2+A3,……,A1+A2+……+An,所以建图的方式就是分层图,那么客户等待的总时间就是求它的和,即n*A1+(n-1)*A2+(n-2)*A3+……+An。这里从修车师傅考虑,原创 2021-07-22 20:50:09 · 123 阅读 · 0 评论 -
费用流建模2(动态开点)
P2050 [NOI2012] 美食节因为没有初始化,一天的时间就没了。因为这道题的直接开点的话,时间消耗非常大,会TLE,一次要动态开点,大致操作就是跑一遍spfa,开一次点。如果没有流量了,就直接返回。#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long//#define int long long//#define double long double//#define double long原创 2021-07-05 16:24:20 · 105 阅读 · 0 评论 -
费用流建图1
P2517 [HAOI2010]订货属于经典的费用流#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long#define int long long//#define double long double//#define double long long#define re int//#define void inline void#define eps 1e-8//#define mod 1原创 2021-07-01 18:41:52 · 72 阅读 · 0 评论 -
网络流FF算法
#include <bits/stdc++.h>#define int long longstruct ndoe{int ver,edge,next;}e[4000005];int head[10000005],d[1000005],n,m,pre[100005],u,v,w,flow[1000005],adds,ans,tot=1,rec[1000005];void add(int x,int y,int z){e[++tot].ver=y;e[tot].edge=z;e[tot].e原创 2021-06-12 11:03:59 · 299 阅读 · 0 评论 -
ISAP模板2.0
#include <bits/stdc++.h>struct node{int ver,edge,next;}e[1000005];int tot=1,head[1000005],n,m,gap[1000005],d[1000005],s,t,maxflow,u,v,w;void add(int x,int y,int z){e[++tot].ver=y;e[tot].edge=z;e[tot].next=head[x];head[x]=tot;}void addedge(int x,i转载 2021-06-10 15:00:35 · 100 阅读 · 0 评论 -
网络流建模6(P2472 [SCOI2007]蜥蜴)
P2472 [SCOI2007]蜥蜴题目描述在一个 rr 行 cc 列的网格地图中有一些高度不同的石柱,第 ii 行 jj 列的石柱高度为 h_{i,j}hi,j 。一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。每行每列中相邻石柱的距离为 11,蜥蜴的跳跃距离是 dd,即蜥蜴可以跳到平面距离不超过 dd 的任何一个石柱上。石柱都不稳定,每次当蜥蜴跳跃时,所离开的石柱高度减 11(如果仍然落在地图内部,则到达的石柱高度不变)。如果该石柱原来高度为 11,则蜥蜴离开后消失,以后原创 2021-04-14 21:55:51 · 122 阅读 · 0 评论 -
网络流建模5(有上下界的网络流)
P2172 [国家集训队]部落战争#include <bits/stdc++.h>#define inf 0x7fffffff//#define ll long long//#define int long long//#define double long double#define eps 1e-8//#define mod 1e9+7#define ls(p) p<<1#define rs(p) p<<1|1#define pi acos(-1.转载 2021-04-05 19:59:44 · 460 阅读 · 0 评论 -
网络流建模4
P2762 太空飞行计划问题注意如何打印选择器材和实验#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long#define int long long//#define double long double#define eps 1e-8//#define mod 1e9+7using namespace std;//const int mod=1e9+7;const int M=1e7+5;原创 2021-04-02 10:39:14 · 83 阅读 · 0 评论 -
P1344 [USACO4.4]追查坏牛奶Pollutant Control(ISAP模板)
传送门简单解释一下如何求割的边数(即车数);思路一:先用ISAP在原图中求最小割(即代价),然后将原图中的边权改为1,再求最小割(车数);思路二:因为m<=1000,所以将原图边权改为edge*mod+1(mod为大于1000的任何数),代价即为当前图下的最小割/mod,车数即为当前图下最小割%mod(记得开long long)#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long#define原创 2021-03-06 18:46:33 · 132 阅读 · 0 评论 -
P4001 [ICPC-Beijing 2006]狼抓兔子(ISAP模板题)
传送门题目描述现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形:左上角点为 (1,1)(1,1), 右下角点为 (N,M)(N,M) (上图中 N=3N=3, M=4M=4).有以下三种类型的道路:(x,y)\rightleftharpoons(x+1,y)(x,y)⇌(x+1,y)(x,y)\rightleftharpoons(x,y+1)(x,y)⇌(x,y+1)(x,y)\原创 2021-03-05 17:15:24 · 134 阅读 · 0 评论 -
网络流建模3
POJ3469译文:随着越来越多的计算机配备双核CPU,TinySoft公司的首席技术官SetagLilb决定更新他们的著名产品——SWODNIW。该例程由N个模块组成,每个模块都应该在某个核心中运行。估计了在两个内核上执行所有例程的成本。让我们把它们定义为Ai和Bi。同时,M对模块需要进行数据交换。如果它们运行在同一个内核上,那么可以忽略此操作的成本。否则,需要一些额外的费用。你应该明智地安排,尽量减少总费用。输入输入数据的第一行有两个整数,N和M(1≤N≤20000,1≤M≤200000)。原创 2021-03-18 20:02:12 · 89 阅读 · 0 评论 -
网络流建模(1)
P2598 [ZJOI2009]狼和羊的故事链接源点,汇点连上边权无限大的边,相邻两边连上边权为一的边,建图完成#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long//#define int long long//#define double long double#define eps 1e-8//#define mod 1e9+7using namespace std;//const in原创 2021-03-17 22:05:32 · 95 阅读 · 0 评论 -
网络流建模2
题目描述XX 酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化。由于很多来住店的旅客有自己喜好的房间色调、阳光等,也有自己所爱的菜,但是该酒店只有 pp 间房间,一天只有固定的 qq 道不同的菜,每个房间只能住一位客人,每道菜也只能给一位客人食用。有一天来了 nn 个客人,每个客人说出了自己喜欢哪些房间,喜欢哪道菜。但是很不幸,可能做不到让所有顾客满意(满意的条件是住进喜欢的房间且吃到喜欢的菜)。要怎么分配,能使最多顾客满意呢?输入格式第一行给出三个整数,分别表示表示 n,p,qn原创 2021-03-11 21:41:25 · 88 阅读 · 0 评论