网络流
文章平均质量分 50
DZYO
Never stop
展开
-
bzoj4439[Swerc2015]:Landscaping (最大流、最小割)
bzoj4439[Swerc2015]原创 2017-03-30 10:27:10 · 865 阅读 · 0 评论 -
UOJ#77. A+B Problem(线段树+最小割)
传送门题解:此类黑白染色的问题,通常可以用最小割解决。 先把所有贡献加入ans" role="presentation">ansansans。 对于一个点,建边: S→wii→bides" role="presentation">S→wii→bidesS→wii→bidesS\mathop{\rightarrow}\li原创 2018-02-04 21:41:29 · 454 阅读 · 0 评论 -
Topcoder SRM689 Div1 900 : ZeroPointSixThreeSix (费用流)
题意:平面上给一些点对,这些点对一一匹配, 价值为他们的距离之和。 要求寻找一个匹配使得每个匹配之间的连线不与其他连线相交, 且这个匹配的价值大于原来匹配价值的0.6360.6360.636。题解:先说结论: 由于鸽巢原理一定存在某个不相交匹配大于最大匹配的价值的2π2π\frac{2}{\pi}倍,同时, 随机一个角度,把两侧的点对构成匹配,价值的期望等于最大匹配的2π2π\fra...原创 2018-03-13 20:54:56 · 322 阅读 · 0 评论 -
BJ模拟:Delight for a Cat(费用流)
传送门 从前,有一只懒猫叫CJB。每个小时,这只猫要么在睡觉,要么在吃东西,但不能一边睡觉一边吃东西,并且这只猫会在一整个小时干同一件事情。 对于接下来的nnn个小时,CJB知道他在那nnn个小时睡觉和吃东西的快乐值。 为了健♂康♀地生活,在任意的连续 kkk 个整小时内,CJB要有至少 msmsm_s 小时睡觉,至少 memem_e 个小时在吃东西。也就是说一共有 n−k+1...原创 2018-04-09 16:00:42 · 459 阅读 · 0 评论 -
BJ模拟:Mr. Panda and Tube Master(费用流)
传送门题解: 考虑黑白染色,把原来的点拆为两个点,令黑点左右连边,白点上下连边做最大匹配。 如果不是必需点,则自己和自己连边。显然任意合法方案都对应着一组匹配,而任意一组匹配都可以还原出一个方案。 我们做最大费用最大流即可。#include <bits/stdc++.h>using namespace std;inline int rd(int x=0) {re...原创 2018-05-05 14:25:12 · 414 阅读 · 0 评论 -
Codeforces 590 E :Birthday(最长反链)
传送门题解: 依照题意找最长反链即可。不过要输出方案,我们可以这么做: 1.传递闭包,二分图匹配。 2.两边都在二分图最大独立集中的点即为最长反链。证明: 1.这个方案肯定是反链。 2.设最大匹配为MMM,独立集大小为2N−M2N−M2N-M,最小链覆盖为N−MN−MN-M,依据抽屉原题,反链大小≤N−M≤N−M\le N-M,而“只存在于独立集一边”的点≤N≤N\le N,...原创 2018-07-09 16:37:33 · 652 阅读 · 0 评论 -
Codechef:Game of Numbers/GNUM (网络流)
传送门题解:每个质数新建点跑最大匹配即可。#include <bits/stdc++.h>using namespace std;const int RLEN=1<<18|1;inline char nc() { static char ibuf[RLEN],*ib,*ob; (ib==ob) && (ob=(ib=ibuf)+fread(...原创 2018-10-11 15:18:25 · 587 阅读 · 0 评论 -
Codechef:Two Companies/TWOCOMP
传送门题解:想了半天看了一眼数据范围。。 直接最大独立集。#include <bits/stdc++.h>using namespace std;typedef long long LL;const int RLEN=1<<18|1;inline char nc() { static char ibuf[RLEN],*ib,*ob; (ib==ob) &...原创 2018-10-11 16:25:54 · 227 阅读 · 0 评论 -
Codechef : CALLSCHE(网络流)
传送门题解:先强制每个点不休息,然后每个点可以分配一些休息的给其他人。 每个人每天也可以算出必须休息多少天。 用个上下界网络流即可。(后来发现自己傻逼了,直接最大流看有没有最大匹配就行了)。#include <bits/stdc++.h>using namespace std;const int RLEN=1<<18|1;inline char nc() {...原创 2018-09-21 15:50:48 · 248 阅读 · 0 评论 -
Codechef:Annual Parade/PARADE(费用流)
传送门题解:注意到一个条件若si̸=tis_i\not = t_isi̸=ti,那么有CCC的费用。这个条件显然就是强行让无向图的最小路径覆盖可以做。然后Floyd传递闭包后费用流就做完了,为了避免每次做费用流复杂度过高,我们可以把每次增广的费用记下来二分。#include &lt;bits/stdc++.h&gt;using namespace std;const int ...原创 2018-10-15 20:55:38 · 529 阅读 · 0 评论 -
Codechef :A Game of Thrones/GTHRONES(网络流)
传送门题解:用Miller-Rabin建边,之后就是个二分图博弈。这个直接判断最大匹配的必备点即可,注意每个点可以匹配多次,可以用网络流退流来判断。#include <bits/stdc++.h>using namespace std;typedef long long LL;const int RLEN=1<<18|1;inline char nc() ...原创 2018-10-16 09:20:41 · 886 阅读 · 0 评论 -
BZOJ1143: [CTSC2008]祭祀river(最长反链)
传送门题意: 给一个DAGDAGDAG,选出最大的点集,使得他们两两不在同一条链上。题解:最长反链裸题。首先有一个结论是最长反链等于最小链覆盖。这个理解起来也比较简单,首先最小链覆盖可以覆盖完所有点,所以最长反链≤≤\le最小链覆盖。 反过来可以用归纳法证明,可以参考vfk的博客。然后这个可以用网络流优化。首先考虑最小路径覆盖的建图方法,每个点拆成两个点i1,i2i...原创 2018-01-22 21:17:52 · 333 阅读 · 5 评论 -
codevs1237:餐巾计划问题(费用流)
传送门题解: 注意到每天的需求和每天剩下的是独立的,也就是说相当于一开始每天都会新增ri" role="presentation">ririr_i个餐巾(从源点直接连(ri,0)" role="presentation">(ri,0)(ri,0)(r_i,0)),那么把需求点和剩余点分成两边,剩余点按照题目意思(待洗)向需求点连边即可。因为可以购买,所以源点还要向需求点连边。 同时剩下原创 2018-01-27 22:24:26 · 191 阅读 · 0 评论 -
BZOJ 4823: [Cqoi2017]老C的方块(最小割)
题解:最大流因为图的大小明显超内存,所以考虑对有金币的点进行处理。首先把每个有金币的点的颜色染出,染的方式如下: 将每个特殊边左右染成红绿色,红色旁边为白色,绿色旁边为黑色。发现将原来的特殊形状必定经过像 白->红->绿->蓝 的路径。可以把四种颜色分成四层,通过求解使这样的路径分开的图的最大流,即最小割。白点向s点,黑点向t点 建容量为W的边, 白连向红,红连向绿, 建容量为Wmin的边。原创 2017-05-06 19:20:34 · 351 阅读 · 0 评论 -
poj1637:Sightseeing tour(混合图欧拉回路,网络流)
传送门题意:判断混合图是否存在欧拉回路。真是一道好题。 把该图的无向边随便定向, 计算每个点的入度和出度。如果有某个点出入度之差为奇数,那么肯定不存在欧拉回路。因为欧拉回路要求每点入度= 出度,也就是总度数为偶数,存在奇数度点必不能有欧拉回路。好了,现在每个点入度和出度之差均为偶数。那么将这个偶数除以2,得x。也就是说,对于每一个点,只要将x 条边改变方向(入>出就是变入,出>入就是变出),就能保原创 2017-08-04 23:35:16 · 555 阅读 · 0 评论 -
SPOJ962:Intergalactic Map(最大流)
传送门题意: 在一个无向图中,一个人要从1点赶往2点,之后再赶往3点,且要求中途不 能多次经过同一个点。问是否存在这样的路线。题解: 将题意转化,即求从2到1,3的两条不同路径。因为是点只能走一次,所以拆点,一个表示进,一个表示出,中间连1的边就行了(如果是边的限制可以不拆点)。#include<iostream>#include<cstdio>using namespace std;co原创 2017-08-22 16:42:44 · 308 阅读 · 0 评论 -
BZOJ3876: [Ahoi2014&Jsoi2014]支线剧情(上下界费用流)
传送门 题意: 给定一张拓扑图,每条边有边权,每次只能从第一个点出发沿着拓扑图走一条路径,求遍历所有边所需要的最小边权和。题解: 最小费用可行流。注意建图: 求的网络流有上下界,连接的每条下界为1的边都会产生影响,应该在建图时加上。#include<bits/stdc++.h>using namespace std;streambuf *ib,*ob;inline int read()原创 2017-09-06 16:58:45 · 656 阅读 · 0 评论 -
NOIP模拟:Box(费用流)
题意: 有n个盒子,每个盒子长lil_i,宽rir_i,大的盒子可以装一个比他小的盒子(可以不断嵌套,但不能并排装),且这一堆盒子的费用为大的盒子的费用,最小化费用。题解:费用流。一开始建图想了半天,一直往最小费用上想,思考怎么把一串盒子串起来。后来发现这种方法行不通,可以换一种思路: 一个盒子只能选一次,且只能被一个盒子嵌套(总费用会减少较小该盒子的费用),不妨一开始就把所有盒子的费用加上,如原创 2017-10-19 20:46:51 · 473 阅读 · 0 评论 -
BZOJ2597: [Wc2007]剪刀石头布(费用流)
传送门题解: 从反方向考虑找不满足的个数cntcnt,那么答案是(3n)−cnt\begin{pmatrix}{3\\n} \end{pmatrix}-cnt。从每个不满足的环考虑,因为原图是竞赛图,所以肯定有一个点连出了两条边,那么有:cnt=∑i(2d[i])cnt=\sum_i{\begin{pmatrix}{2\\d[i]}\end{pmatrix}} d[i]d[i]为点ii出度。转化原创 2017-12-08 14:03:39 · 283 阅读 · 0 评论 -
网络流建模汇总
Dinic算法其实就是不断找增广路。。Dinic只不过是在最短路上增广,有了一步优化。例题:poj1273(模板)先打个模板压压惊。#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int Maxn=2e2+50,Maxm=5e2+50;const int INF=0x3f3f3f原创 2017-08-04 17:56:54 · 759 阅读 · 0 评论 -
BZOJ2400:[Spoj 839]Optimal Marks(最小割)
传送门题意: 给一张无向图,有些点的点值已经给出,有些点的点值可以自由选择。定义一条边的权值为两点异或值。先要求给这些点赋值,使得最后边的权值和最小,并输出此时的点值和,若有多个方案使得边的权值和最小,那么输出使得点值和最小的方案。题解: 好题啊。。首先异或每一位是独立的,可以分开来计算。发现对于每一位考虑,相当于是给没有确定的点赋0,1值,使得相邻点的两两异或最小。而原问题其实等价于将点分成S原创 2017-12-06 11:25:19 · 411 阅读 · 0 评论 -
最小割模型汇总
二分图点带权最小覆盖这个可以说是最小割模板了,简单来说就是选取一个点集,所有边都连接了这个点集,最小化这个点权和。首先假设只有一对点,一条边 要选出较小值,建边(s->1,v1),(1->2,INF),(2->t,INF) 显然割开最小值。 对于多个点边,求最大流(最小割)即可。原创 2017-08-22 17:07:10 · 2508 阅读 · 0 评论 -
上下界网络流
。原创 2017-08-22 20:48:32 · 290 阅读 · 0 评论 -
poj3680:Intervals(费用流)
传送门题意: 给n(≤200)n(\le 200)个区间(ai,bi)(a_i,b_i),要求从中选择一些区间使得和最大,而且满足∀x,∑i[ai<x≤bi]≤k\forall x, \sum_i[a_i\lt x\le b_i]\le k。题解: 发现最优决策一定可以分解为不超过kk个不相交的区间。那么直接连边做kk次增广即可。#include<iostream>#include<cstdi原创 2017-12-07 22:48:07 · 187 阅读 · 0 评论 -
Codeforces 802C :Heidi and Library (hard)(网络流)
传送门题解:比较简单的建图法就是看做小于k条流在一个n∗nn*nn∗n序列上流,其中一些位置是必须流的,然后做个上下界费用流。不过注意到肯定有一种方案使得这小于kkk条流是不相交的,于是可以直接看做有nnn个点,每个点拆点连−∞-\infty−∞的边,然后规定这个点必须是aia_iai,然后跑个最小费用可行流,这样nnn个−∞-\infty−∞必定流满,此外其他加起来最小。最后加个n∗∞...原创 2018-11-30 17:33:51 · 435 阅读 · 0 评论