随笔分类 - 图论算法-网络流
摘要:[AHOI2014]支线剧情(有上下界的网络流) 题面 JYY现在所玩的RPG游戏中,一共有N个剧情点,由1到N编号,第i个剧情点可以根据JYY的不同的选择,而经过不同的支线剧情,前往Ki种不同的新的剧情点。当然如果为0,则说明i号剧情点是游戏的一个结局了。 JYY观看一个支线剧情需要一定的时间。J
阅读全文
摘要:[SDOI2014]LIS(最小割) 题面 给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci。请删除若干项,使得A的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案。 如果有多种方案,请输出将删去项的附加属性排序之后,字典序最小的一种。 分析 先
阅读全文
摘要:[BZOJ2561]最小生成树(最小割) 题面 给定一个边带正权的连通无向图G=(V,E),其中N=|V|,M=|E|,N个点从1到N依次编号,给定三个正整数u,v,和L (u≠v),假设现在加入一条边权为L的边(u,v),那么需要删掉最少多少条边,才能够使得这条边既可能出现在最小生成树上,也可能出
阅读全文
摘要:[ZJOI2010]网络扩容(费用流) 题面 给定一张有向图,每条边都有一个容量和一个扩容费用。这里扩容费用是指将容量扩大所需的费用。求: 在不扩容的情况下,到的最大流; 将到的最大流增加所需的最小扩容费用。 分析 先求出原图的最大流,大小设为。
阅读全文
摘要:网络流常见建图套路总结(重制版) 前置知识 网络流的基本算法:Dinic最大流,EK+SPFA求费用流 最小割,最小割最大流定理 二分图判定,匹配,相关性质 由于本文以建图方法为主,不涉及网络流算法的具体实现,以上前置知识一边看一边学也可以 最大流 二分图最大匹配与多重匹配 二分图匹配:给定一个二分
阅读全文
摘要:[BZOJ2127]happiness(最小割) 题面 高一一班的座位表是个n m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友。这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文科或者理科,那么他们又将收获一些喜悦值。作为计算机竞赛
阅读全文
摘要:[网络流24题]餐巾计划问题(费用流) 题面 一个餐厅在相继的 N天里,每天需用的餐巾数不尽相同。假设第 天需要块餐巾( i=1,2,...,N)。餐厅可以购买新的餐巾,每块餐巾的费用为 p 分;或者把旧餐巾送到快洗部,洗一块需 m 天,其费用为 f 分;或者送到慢洗部,洗一块需 n
阅读全文
摘要:[BZOJ1001]狼抓兔子(平面图最小割) 题面 略 分析 我们发现,如果把 每个平面区域看成一个点 ,交界处的边看成连接两个区域的边,再加两个点表示分割线的起点和终点、那么原图的一个割就对应新图的一条路径。如图上S (1) (4) (9) (10) T就构成了一个分割线,割断的边权为5,6,3,
阅读全文
摘要:[AT5203][AGC038F]Two Permutations(网络流).md 题面 给出两个排列.要求构造两个排列. 要求:要么等于,要么等于;要么等于,要么等于 最大化的下标数量 分析
阅读全文
摘要:[POJ1149][SPOJ4063]PIGS(最大流) 题面 略 分析 很妙的网络流建图套路。 注意到我们只能交换客户打开过的猪圈里的猪。那么相当于可以通过顾客来中转猪。体现到建图上就是: 我们把每一个顾客看成一个点。对于每个猪圈,从原点向打开它的第一个顾客连边,容量为初始猪数量,表示最
阅读全文
摘要:从多种角度看[BZOJ 1061] [NOI 2008]志愿者招募(费用流) 题面 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管。布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者。经过估算,这个项目需要N 天才能完成,其中第i 天至少需要Ai 个人。 布
阅读全文
摘要:最小割树(Gomory Hu Tree) 前置知识 Gomory Hu Tree是用来解决无向图最小割的问题的,所以我们需要了解无向图最小割的定义 和有向图类似,无向图上两点(x,y)的割定义为一个边集E,满足去掉该边集后x,y不联通。最小割即为所有的割中权值之和最小的割 通过这条割我们把点集划为两
阅读全文
摘要:分析 "网络流24题总结" 维护三个状态(x,y,k)表示当前坐标(x,y)和剩余流量k,dist(x,y,k)表示当前状态下的最小花费 到了每一个点分类讨论: 1.遇到油库,必须加满,以加满的状态继续转移 2.没有油库,设一个油库,并把油加满 3.没有油库,继续走 代码 最短路: cpp incl
阅读全文
摘要:分析 "网络流24题总结" 这题直接状压BFS也可以,不过可以把BFS改成SPFA,进一步优化 显然要维护三个状态:s,x,y,分别表示钥匙状态s(用一个二进制表示,第i位为1表示当前有第i个钥匙),和当前的x,y坐标,以这三个状态来分层 那么设dist(s,x,y)表示到达当前状态的最短时间 转移
阅读全文
摘要:分析 裸的最短路: 把错误集合状压成一个二进制,第i为为1表示有第i个错误 把这个状态x作为图上的节点编号,dist[x]表示转移到状态x需要的时间 显然初始状态为dist[]最终的答案为dist[0] 转移的时候枚举每一个补丁,通过位运算判断补丁i是否能修复当前状态 代码 cpp i
阅读全文
摘要:题面 Nick最近在玩一款很好玩的游戏,游戏规则是这样的: 有一个n m的地图,地图上的每一个位置要么是空地,要么是炮塔,要么是一些BETA狗,Nick需要操纵炮塔攻击BETA狗们。 攻击方法是:对于每个炮塔,游戏系统已经给出它可以瞄准的方向(上下左右其中一个),Nick需要选择它的攻击位置,每一个
阅读全文
摘要:分析 此题跟“方格染色”一样 先对棋盘黑白染色(这是常见套路),我们发现,如果选了一个黑点,那相邻的白点就不能选,反之同理 出现了冲突关系,考虑最大权闭合子图 把黑点看成正权点,白点看成负权点,黑点向能走到的白点连边,跑最大权闭合子图即可 代码 cpp include include include
阅读全文
摘要:分析 先对棋盘黑白染色(这是常见套路),我们发现,如果选了一个黑点,那相邻的白点就不能选,反之同理 出现了冲突关系,考虑最大权闭合子图 把黑点看成正权点,白点看成负权点,黑点向相邻白点连边,跑最大权闭合子图即可 代码 cpp include include include include defin
阅读全文
摘要:分析 最大权闭合子图模板题 把实验获得的收益看成正权点,仪器费用看成负权点,每个实验向所需要的仪器连边 跑最大权闭合子图即可 详见 "https://www.cnblogs.com/birchtree/p/10304793.html" 代码 cpp include include include i
阅读全文
摘要:[luogu 2754] 家园 "传送门" 分层图上的最大流.按时间分层 建图方法: 时间t不断增加,每一天: (1)从源点向每一天的地球连容量为INF的边,流过该点相当于当天从地球出发 (2)从每一天的月亮向汇点连容量为INF的边,流过该点相当于当天到达月球 (3)从上一天的每一个中转站向当天的对
阅读全文