洛谷P4003 无限之环(费用流)】的更多相关文章

洛谷题目传送门 题目 题目描述 曾经有一款流行的游戏,叫做 Infinity Loop,先来简单的介绍一下这个游戏: 游戏在一个 n ∗ m 的网格状棋盘上进行,其中有些小方格中会有水管,水管可能在格子某些方向的边界的中点有接口,所有水管的粗细都相同,所以如果两个相邻方格的共边界的中点都有接头,那么可以看作这两个接头互相连接.水管有以下 15 种形状: 游戏开始时,棋盘中水管可能存在漏水的地方. 形式化地:如果存在某个接头,没有和其它接头相连接,那么它就是一个漏水的地方. 玩家可以进行一种操作:…
传送门 神仙题啊……不看题解我可能一年都不一定做得出来……FlashHu大佬太强啦 到底是得有怎样的脑回路才能一眼看去就是费用流啊…… 建好图之后套个板子就好了,那么我们着重来讨论一下怎么建图 首先,对于每一个水管的支管,有且仅有一个其他支管与他相连,那么就不会漏水了.用网络流的说法,就是要每个支管容量只能为1且必须满流 然而因为最优情况图可能会被分成好几个连通块,于是我们得强制所有相邻的格子都有流量才行(就是确保连通块不管怎么划分都能流) 那么黑白染色冷静一下……黑点连源,白点连汇 然后费用是…
题目链接 LOJ 洛谷 容易想到最小费用最大流分配度数. 因为水管形态固定,每个点还是要拆成4个点,分别当前格子表示向上右下左方向. 然后能比较容易地得到每种状态向其它状态转移的费用(比如原向上的可以流到向下). 注意比如向左向上的L,左连右,上连下,没有上连右(日常zz). 可以看这的图. 解决旋转的问题后,还要处理流量从哪里产生.结束. 因为是网格图,容易想到黑白染色.题目中"没有漏水水管"即格子的断头两两匹配,而匹配只发生在黑白格之间.so源点向所有白格子连边,所有黑格子向汇点连…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5120 题意概括 原题挺简略的. 题解 本题好难. 听了任轩笛大佬<国家队神犇>的讲课才略会. 然而费用流我也是第一次写.而且这题的费用流是特殊的(简化的). 于是我抄了任爷的代码. 然而,我因为常量写错,找了一个小时…… 这里的work和add我都是直接抄的……懒得打,打完还不一定找得出.反正做法是懂了. 本题很坑. 对于40分,还是比较好拿的,插头dp+滚动(然而我忘记开滚动炸了内存……)就…
题目链接 嗯..水题 洛谷这网络流二十四题的难度评价真神奇.. #include <queue> #include <cstdio> #include <cctype> #include <cstring> #include <algorithm> #define gc() getchar() const int N=206,M=15000,INF=0x3f3f3f3f; int n,m,src,des,A[N],B[N],C[N][N],dis…
传送门 源点向仓库连费用$0$,流量为储量的边,商店向汇点连费用$0$,流量为需求的边,然后仓库向商店连流量$inf$,费用对应的边,跑个费用流即可 //minamoto #include<iostream> #include<cstdio> #include<queue> #include<cstring> #define inf 0x3f3f3f3f using namespace std; #define getc() (p1==p2&&…
传送门 可以把原图看做一个二分图,人在左边,任务在右边,求一个带权的最大和最小完美匹配 然而我并不会二分图做法,所以只好直接用费用流套进去,求一个最小费用最大流和最大费用最大流即可 //minamoto #include<iostream> #include<cstdio> #include<queue> #include<cstring> #define inf 0x3f3f3f3f using namespace std; #define getc()…
https://www.luogu.org/problemnew/show/P4452 又一道看题解的费用流. 注意时间也影响节点,像题解那样建边就少很多了. #include<bits/stdc++.h> using namespace std; +; ; const int INF=0x3f3f3f3f; struct Edge{ int to,next,cap,flow,cost; }edge[MAXM]; int head[MAXN],tol; int pre[MAXN],dis[MA…
传送门 解题思路 神仙题.调了一个晚上+半个上午..这道咋看咋都不像图论的题竟然用费用流做,将行+列为奇数的点和偶数的点分开,也就是匹配问题,然后把一个点复制四份,分别代表这个点的上下左右接头,如果有这个接头就加一个费用为\(0\),流量为\(1\)的边,如果没有要分情况讨论,因为从源点到这个点的流量是固定的,当只有一个接头时,可以让这个点向自己其余三个点连费用为\(1\),流量为\(1\)的边,当有两个接头并且两个接头相邻时,让这个点的两个接头分别与对应的方向连边,当有三个接头时,让那个没有的…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5120 https://www.luogu.org/problemnew/show/P4003 神奇的费用流建图: 首先,网格图,相邻之间有关系,所以先二分染色一下: 然后发现问题就是染色后黑白点之间要完美匹配插头: 所以可以考虑把旋转通过带一些代价变成插头方向的变化: 把一个格子拆成上下左右四个点,分类讨论,连边即可: 然而一开始连边竟然写了100多行...然后T了: 看了看题解代码,突然…