随笔分类 - 图论->网络流
摘要:1.无源汇有上下界可行流 给出一个网络图,每一条边都有上下界。 求是否存在一个可行流满足上下界。 解决方法: 新建源点汇点,由于一条边的流量范围为$[l,r]=l+[0,r-l]$,我们可以假定有一个隐藏的下届流量偷偷的流,我们建图处理后面那个$[0,r-l]$就好。 但是比如对于一个点$u$,若流
阅读全文
摘要:题目描述: bz 题解: 线段树模拟费用流。 想法和种树有点类似。 每次取区间内权值和最大的一段,然后整体乘$-1$,代表再次选中时会去掉之前的影响。 线段树维护一堆东西…… 小白逛公园双倍快乐。乘$-1$时交换正反。 [滑稽] 代码: #include<cstdio> #include<cstri
阅读全文
摘要:题目描述: bz 题解: 最小割。 对于不考虑组合的情况,可以: $S->x$,边权为$art_x$; $x->T$,边权为$science_x$; 这样跑出来的总权值-最小割等于正解贪心。 考虑加上组合,那么可以: 新建点$y$代表文科组合,$z$代表理科组合; $S->y$,边权$sameart
阅读全文
摘要:题目描述: 你有$m$个猪圈,有$n$个人会来买猪。其中每个人都会打开某几个猪圈的门,你可以在他们买完后移动猪的位置。 每人有买猪数量的上界,求最多买多少头猪。 题解: 最大流。 神奇建图: 正确性显然。 然后跑最大流就好了。 代码: #include<queue> #include<cstdio>
阅读全文
摘要:题目描述: poj 题解: 最大流+欧拉回路简单的性质。 有向图存在欧拉回路当且仅当每个点入度等于出度。 那么就很好办了,给出所有边,每个点入度+出度已知,先判一波度数。 然后边和点有二分图的关系,求一下最大匹配是否等于$0$的数量就好了。 代码: #include<queue> #include<
阅读全文
摘要:题目描述: bz luogu 题解: 最小费用流。 对于三支队伍,胜负情况只有$2$种。 一种是形成三元环,另一种是$x$赢两场,$y$赢一场,$z$没赢过。 所以我们统计一下另一种最少有多少种就好了。 最后答案就是$C^3_n-k$。 对于一个队伍$x$,若其胜场数为$w_x$,则会造成的负贡献为
阅读全文
摘要:题目描述: $T$组询问,每次给出$m,n,q$以及$q$组限制,求一个$m*n$的矩阵,满足: 题解: 有源汇有上下界可行流板子题+墙题。 每一行/列都看作一个点$x$。矩阵里的数就是相连的边权。 对于限制$1$,可以看作$S$连$x$/$x$连$T$的边上下界都为给出值$k$; 对于限制$2$,
阅读全文
摘要:题目描述 题解: 大意是$0$为源,所有叶子节点为汇,求费用在$m$以内的最大流。 直接跑网络流会$T$。 考虑树形$dp$,发现自己不会。 考虑贪心,每次找一个路径总费用最小的叶子结点(每条边费用为$0$或$1$或$inf$),然后求出路径最大容量, 整条树链都减掉最大容量。 输入时每条边有$(a
阅读全文
摘要:对偶图+最短路(好像可以用isap水)。
阅读全文
摘要:题目描述 题解: 这个菜鸡认为很神的一道最小割。 后来发现是模型之一。 其实将题意理解为,$(x1,y1)$与$(x2,y2)$相邻,$(x1,y1)$位置上选择了$z1$,那么$(x2,y2)$位置上不能取$z1-d$以下的点。 代码:
阅读全文
摘要:题目描述 题解: 每条边至少经过一次,说明经过下界为$1$。 然后套有源汇上下界最小费用可行流板子。 口胡一下。 此类问题的建图通式为: 1.假设原来的边流量上下界为$[l,r]$,那么在新图中建流量上界为$(r-l)$的边; 就是必须流的先流完,不一定的一会再算。 2.统计一下每个点流入的$l$之
阅读全文
摘要:题目描述: 小N手上有一个N*M的方格图,控制某一个点要付出Aij的代价,然后某个点如果被控制了,或者他周围的所有点(上下左右)都被控制了,那么他就算是被选择了的。一个点如果被选择了,那么可以得到Bij的回报,现在请你帮小N选一个最优的方案,使得回报-代价尽可能大。 题解: 最开始以为是最大权闭合子
阅读全文
摘要:题目描述 题解: 由于干每棵植物之前需要先干掉它右面的植物和保护他的植物, 我们可以发现这是最大权闭合子图问题。 简单提一下。 闭合子图,指这个子图中所有的点只会指向子图中的点。 最大权,指这些点有点权,要求得到的闭合子图点权之和最大。 解决办法是,$S$向正点权的点连容量为点权的边,负点权的点向$
阅读全文
摘要:题目描述 题解: 由于线段可以出现平行于$y$轴的情况, 我们要拆点。 然后分情况讨论。 具体方法不赘述。 代码:
阅读全文
摘要:题目描述 题解: 当然上来就离散咯。 先建一条数轴,每个点向后一个点建容量为$k$的边; 然后对于每一个区间,左端点向右端点建容量为$1$的边,费用为离散之前的$l-r$。代表可以跳过这段区间。 代码:
阅读全文
摘要:题目描述 题解: 最大费用流。 每个点向后面不小于它的点建一条容量为$1$,费用$-1$的边。 $S$向所有点建容量为$1$的入边(费用为$-1$),所有点向$T$建容量为$1$的出边(费用为$0$)。 然后最大费用流。 由于第一次得到的通路是费用最小的,这个费用的相反数就是问题一的答案。 然后继续
阅读全文
摘要:题目描述 题解: 其实这道题才是最裸的因为它把建图都交代了 相当于每个点出边唯一,入边唯一。 然后发现这是二分图匹配。 代码:
阅读全文
摘要:题目描述 题解: 分操作讨论一下。 操作$1$: 两条路径走到同一个点原地爆炸。 由于要求点只能取一次,我们可以将点拆为入点和出点。 1.入点->出点,容量为$1$,费用为点权相反数; 2.上面的出点->下面的入点,容量为$1$,费用为0; 3.$S$->最上面一排入点,最下面一排出点->$T$,处
阅读全文
摘要:题目描述 题解: 网络流二十三题中比较有意思的一道题。 正常能想到的建图方法是: 1.拆点,将每一天拆成早上和晚上; 2.早上向晚上连边,容量为当天所需餐巾数; 3.今天晚上向明天晚上连边,容量为正无穷; 4.$S$向早上连边,容量正无穷,费用为买餐巾费用; 5.每天晚上向慢洗后的那一天早上连边,容
阅读全文
摘要:题目描述 题解: 将所有点拆开。 $0$点的拆点之间费用为$0$; $2$点的拆点之间费用为$-1$。 所有点不能到$1$上。 然后最大费用流。 代码:
阅读全文

浙公网安备 33010602011771号