网络流
文章平均质量分 54
C202207xiaofang
保加利亚希望中学附属光明小学优秀毕业生
展开
-
To_Heart—题解——[SCOI2012]奇怪的游戏
黑白染色后发现如果黑色格子数量等于白色格子数量,那我们可以转换成二分图网络流模型,这部分应该是个很常见的 trick,二分一下操作次数判断是否满流,然后无解的判断在于一开始黑白两种格子的权值和是否相等。的棋盘,每次操作可以选择两个相邻的格子,让这两个各自上的数都 +1。问最少多少次操作使得所有格子的数相等。因为相邻两个格子进行操作,而且是方格,所以很容易想到黑白染色(好久没做题了这个都想不到了/kk)。这时候其实可以直接确定最后的每个格子的值。那么我们直接用二分图那个来判断一下是否有解就行了。原创 2023-02-21 16:18:30 · 356 阅读 · 0 评论 -
直到冬天九年仍未记起镜中的她 题解
题目描述Link.题解首先枚举每一行的 1 的个数为 kkk;有一个基本的性质,就是每一行的1的个数×行数=每一列的1的个数×列数每一行的 1 的个数 \times 行数 = 每一列的1的个数\times 列数每一行的1的个数×行数=每一列的1的个数×列数 ,所以转换后的题目就可以用网络流来做了。边的类型有两种:我们把 Ai,jA_{i,j}Ai,j 看做是第 iii 行 和 第 jjj 列之间的一条边,如果 Ai,jA_{i,j}Ai,j 为 11,那么这条边流量为 1 ,费用为 0;原创 2022-02-10 21:56:35 · 90 阅读 · 0 评论 -
在重庆的两件衣服的冬天里 题解
题目描述Link.题解这道题肯定被喷,毕竟太版了,不过就当送分吧这道题目是仿造省选题出的,所以可以先看看这道题的题解考虑染色。然后我们发现通过走 红->黄->蓝->绿 就可以走完所有的情况。那么这道题就做完了,把格子按点分成四层。很板吧?肯定被喷的。代码#include<bits/stdc++.h>using namespace std;#define ll long long#define mp make_pair#define pii pair&l原创 2022-02-10 21:23:55 · 94 阅读 · 0 评论 -
To_Heart—总结——最小费用流 dijkstra+EK
前言因为害怕 SPFA 哪天就死了,所以好好学习天天向上的学习 dijkstra 吧!最小费用流 dijkstra+EK因为费用有可能是负数,但我们 可爱 的 dijkstradijkstradijkstra 并不能处理负的边权,所以我们需要利用 JohnsonJohnsonJohnson 算法中的势函数:我们对于每一个点定义一个势函数 hhh,把每条边权 wiw_iwi 改为 wi+hi−hjw_i+h_i-h_jwi+hi−hj,其中 hih_ihi 和 hjh_jhj 表示这条边的原创 2022-01-07 14:26:24 · 417 阅读 · 0 评论 -
To_Heart—题解——BZOJ1791
Link题解我们先考虑一个无法再增广的残留网络中有什么性质因为残留网络是由正向边和其对应的反向边组成的,那么对于 x,yx,yx,y 之间的某条边满流后,其对应的反向边一定有流量。这时,如果 x,yx,yx,y 间另有一条非满流边,则 x,yx,yx,y 间构成一个强连通块。然后我们考虑如果在一种方案中的一条边非满流,而这条边在其它方案中满流了,那么必会导致原方案中的某一条边由满流变为由非满流(如果它还是满流那么最大流就应该变大了)。那么这两条边有什么性质呢?如果我们沿着增广路,可以发现这两条边原创 2021-12-18 15:32:44 · 347 阅读 · 0 评论 -
To_Heart—题解——CF1473F
这里提供一种非常简单,而且贼有效的连边方式首先因为靠后的点会被靠前的点限制,所以这是一道 最大闭合子图 的板题。但是出题人卡了空间,当所有的 aia_iai 相同的时候,连边的复杂度是 n2n^2n2 的,会被卡掉。我们考虑优化,因为 ai≤100a_i \leq 100ai≤100 ,所以我们最多只需要连 100 条边就可以了,所以我们当 iii 已经向 jjj 连边了,那么当 ak=aj,k≠ja_k=a_j,k\neq jak=aj,k=j的时候,我们就不需要由 iii 向 kkk原创 2021-12-11 13:58:32 · 222 阅读 · 0 评论 -
To_Heart—题解——[CQOI2017]老C的方块
这里提供一种更好想,但是点会多一些的做法首先我们很容易就能想到染色染色我们按照以上方法染色,然后发现从 1 出发,沿着 1->2->3->4 的路线,可以把我们所有需要删除情况都涵盖完。所以我们现在就只需要建图了建图因为我们可以沿着 1->2->3->4 的路线走完所有的情况,那么就可以建分层图了:那么图与图之间怎么连边呢?我们就把一个点相邻的点,且染色颜色比它大 1 的点和它之间连一条边,边权为删去当前相邻点的代价。但是我们直接连边会出现问题:就原创 2021-12-10 18:58:28 · 295 阅读 · 0 评论 -
To_Heart—题解——BZOJ3894 文理分科
这里写目录标题题目题解代码题目给个链接其实这道题算是一个比较经典的最小割问题了题解因为对于任何一个点来说,他不是选择文就是选择理,那么对于这种只有两个状态的问题很容易想到用最小割来限制,那么问题就转换成在图上删去最小的贡献使得该图不连通,然后答案就是总贡献减去最小割了。但是我们发现当一个点的上下左右和他的状态相同时会产生额外的贡献,所以我们需要考虑如何在相邻两点状态不相同时删除这一部分的贡献。对于每个点,我们只需要建两个虚点,分别处理上下左右和当前点都是文科/理科的情况。以文科为例,如果当前原创 2021-12-09 14:49:18 · 105 阅读 · 0 评论