Day5网络流

算法

无源汇上下界可行流

先强制流过l的流量

从s到每个正权点连流量为l的流量

从每个负权点向t连-l的流量

如果容量为0,则不连边

有源汇上下界最大流

去掉下界

先求出可行流

再求S到T的最大流

有源汇上下界最小流

直接应用

poj1149

我的思路

建一个点S,到每个顾客,连INF的边,每个顾客

正解

1.用分层图,建n*m个点

2.直接从S向每个人连边,记录下每个猪圈打开的人的先后顺寻,先来的人向后来的人连边

BZOJ2406

Solution

路径覆盖模型

路径覆盖无交集

链覆盖可以有交集

起点,终点的度数都为1

最小化$n-\sum{d}$=最大化$\sum{d}$d为入度

把原图的点都进行拆点

路径覆盖:

若i,j有边,则从i到j‘连边

所有边的边权均为1

链覆盖:

用floyd求传递闭包

从一个点向它能到达的点都连边

用最小流解决

链覆盖把每个点的上限改为INF

魔术球问题

Solution

CTSC2006

最小链覆盖

Dilworth定理

例如<=号

自反性:x<=x

反对称性:x<=y , y<=x —>x==y

传递性:x<=y,y<=z—>x<=z

(<,>不满足偏序关系,不满足第二条性质)

(DAG满足偏序关系,有向图不满足)

反链:两点之间不能相互到达

定理:

TJOI2016XX数学

暴力

拆成n*m个点,每个点的权值下界为给定的权值,上界为INF

优化

对所有点选一条点权和最大的

从左下到右上DP

时间分层

网络流24题星际XXXX

当最大流为k的时候结束

[HNOI2007]紧急疏散

回路限制

POI2010

solution

给每条边定向&&判断是否连通

每条边定向后会使一个点的入度加1,会使一个点的入度减1

先随便定向并保留一次反向机会

可以把每次反向看成一条权值为2的增广路

把点权预先除以二,验证图是否能满流

BZOJ4215

对一个网格进行黑白染色,搞成二分图

用流量为2的边去限制度数为2

如果图满流,那么就存在所有蛇都构成环的方案

找方案的时候看哪些边满流了

如果蛇不构成环,

对于边界上的点,设置其权值为[1,2],对于非边界上的点,其权值为[2,2]

求最大流

最大权闭合子图

模型

所有与S相连的点视为不选择

所有与T相连的点视为选择

有环的情况可以不缩点,(缩点也可以)

TJOI2015 线性代数

Bij*Ai*Aj

Ci*Ai

COdefoeceXXX

若不考虑限制条件

限制条件

从S向新加的点连Wi边

从新加的点向中间的三个点连INF的边

CEOI?

转化为最小割

BZOJ3774

平面图对偶图

狼抓兔子

NOI2010海拔

相当于S和T之前求最小割

距离限制

HNOI拍照

变形

CTSC2009

根据曼哈顿距离的性质

分别最优化横纵坐标

原文地址:https://www.cnblogs.com/zwfymqz/p/8256894.html

时间: 2024-10-12 20:25:12

Day5网络流的相关文章

Python实战之路-day5

生活在于改变,改变自己的生活需要勇气,改变自己的目标更需要勇气.  Hello Python - day5! MVC心法 针对存储端(M)的数据进行增删改查 入库:V端通过HTML.CSS.JS的数据通过GET.POST发送请求,C端(python)通过request.form.get()或request.args.get()接受V端的数据,格式化通过列表.字典.字符串结合python语法存储到M端 出库:V端发送get请求数据,C端python通过request.args.get()拿到get

hiho 第118周 网络流四&#183;最小路径覆盖

描述 国庆期间正是旅游和游玩的高峰期. 小Hi和小Ho的学习小组为了研究课题,决定趁此机会派出若干个调查团去沿途查看一下H市内各个景点的游客情况. H市一共有N个旅游景点(编号1..N),由M条单向游览路线连接.在一个景点游览完后,可以顺着游览线路前往下一个景点. 为了避免游客重复游览同一个景点,游览线路保证是没有环路的. 每一个调查团可以从任意一个景点出发,沿着计划好的游览线路依次调查,到达终点后再返回.每个景点只会有一个调查团经过,不会重复调查. 举个例子: 上图中一共派出了3个调查团: 1

POJ2584 T-Shirt Gumbo 二分图匹配(网络流)

1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 5 const int inf=0x3f3f3f3f; 6 const int sink=30; 7 8 struct Edge 9 { 10 int to; 11 int next; 12 int capacity; 13 14 void assign(int t,int n,int c) 15 { 16 to=t; next=n; ca

UVA 1306 - The K-League(网络流)

UVA 1306 - The K-League 题目链接 题意:n个球队,已经有一些胜负场,现在还有一些场次,你去分配胜负,问每支球队有没有可能获胜 思路:网络流公平分配模型,把场次当作任务,分配给人,然后先贪心,枚举每个人,让这些人能赢的都赢,剩下的去建图,每个源点连向比赛容量为场次,每个比赛连向2个球队,容量无限大,每个球队连向汇点,容量为每个的人的总和减去当前已经赢的,建完图跑一下最大流,然后判断源点流出的是否都满流即可 代码: #include <cstdio> #include &l

hdu 4975 A simple Gaussian elimination problem.(网络流,判断矩阵是否存在)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4975 Problem Description Dragon is studying math. One day, he drew a table with several rows and columns, randomly wrote numbers on each elements of the table. Then he counted the sum of each row and col

POJ训练计划3422_Kaka&#39;s Matrix Travels(网络流/费用流)

解题报告 题目传送门 题意: 从n×n的矩阵的左上角走到右下角,每次只能向右和向下走,走到一个格子上加上格子的数,可以走k次.问最大的和是多少. 思路: 建图:每个格子掰成两个点,分别叫"出点","入点", 入点到出点间连一个容量1,费用为格子数的边,以及一个容量∞,费用0的边. 同时,一个格子的"出点"向它右.下的格子的"入点"连边,容量∞,费用0. 源点向(0,0)的入点连一个容量K的边,(N-1,N-1)的出点向汇点连一

HDU 3488Tour(网络流之最小费用流)

题目地址:hdu3488 这题跟上题基本差不多啊....详情请戳这里. 另外我觉得有要改变下代码风格了..终于知道了为什么大牛们的代码的变量名都命名的那么长..我决定还是把源点与汇点改成source和sink吧..用s和t太容易冲突了...于是如此简单的一道题调试到了现在..sad... 代码如下: #include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #

LibreOJ #6002. 「网络流 24 题」最小路径覆盖

内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:Special Judge 上传者: 匿名 网络流 最大流 屠龙宝刀点击就送 #include <cstring> #include <cstdio> #include <queue> #define N 6005 #define inf 0x3f3f3f3f using namespace std; bool flag[N]; int n,m,dep[N],nextt[N<

POJ 1273 Drainage Ditches (网络流Dinic模板)

Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This means that the clover is covered by water for awhile and takes quite a long time to regrow. Thus, Farmer John has built a set of drainage