![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最小割
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
2018.10.12【BZOJ1319】【CEOI2008】oeder(最小割)
传送门解析:最小割入门题。思路:我们考虑直接做出全部的任务,然后考虑我们可能获得的最小亏损,其中放弃一个任务也是一种亏损,租用或购买一个机器也是一种亏损。我们这样建图,从源点向每个任务连容量为其价值的边,保证这个任务会带来的购买或租用机器造成的亏损不超过它的价值。我们从每个任务向它的工序需要的机器连容量为租用费用的边,再从机器向汇点连容量为购买费用的边。这样求出来的最小割就是我们的...原创 2018-10-12 07:57:09 · 121 阅读 · 0 评论 -
【BZOJ2127】happiness(最小割)
传送门题解:考虑拆点,那么建图非常容易,发现一个人选文和选理之间的边为INF,可以缩成一个点。代码:#include<bits/stdc++.h>#define ll long long#define re register #define cs constusing std::cerr;using std::cout;cs int N=107,M=N*N;...原创 2019-09-16 21:23:11 · 129 阅读 · 0 评论 -
【SHOI2010】最小生成树(贪心)(最小割)
传送门题解:首先这个全局-1可以等价成单点+1。考虑建树的Kruskal算法。发现其实就是要求在加入权值小于等于这条边的那些边的时候,S,TS,TS,T不连通。显然最小割。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constcs int N=507,...原创 2019-09-16 11:57:39 · 177 阅读 · 0 评论 -
【TC SRM 590】FoxAndCity(最小割)
传送门题解:注意到一条边的存在实际上是限制了∣du−dv∣≤1|d_u-d_v|\leq 1∣du−dv∣≤1。我们对这道题,对于最短路为每个值的情况建立一个点,用最小割建图,然后对于du≤dv+1d_u\leq d_v+1du≤dv+1连一条INF边就行了。代码:#include<bits/stdc++.h>#define ll long long#defin...原创 2019-09-12 21:24:33 · 330 阅读 · 0 评论 -
【TC SRM 558】SurroundingGame(最小割)
传送门题解:首先还是棋盘图黑白染色。这种冲突建模显然是考虑网络流。而这道题物品之间的限制关系非常强,直接考虑最小割。每个格子建立两个点,分别表示选择它(1号)和选择它周围的所有点(2号)。显然我们把每个点的2号点和周围所有点的1号点需要连INF,表示这两个情况必须在同一连通块内。然后按照黑白从源汇向1号点连容量为选择它的费用的边,然后1号点和2号点之间需要连容量为这个点的收益的边。...原创 2019-09-12 19:51:29 · 339 阅读 · 0 评论 -
【TC SRM 577】BoardPainting(最小割)
传送门题解:这题有两种完全不同的最小割解法。解法1:首先考虑每个点单独刷一遍。然后考虑合并相邻两个点,每合并两个点我们就会将刷的次数-1。发现这种合并是有问题的,因为我们不支持拐弯和横跨。对于每个合并操作建立虚点,源点向横向合并连容量为1的边,纵向的合并操作向汇点连容量为1的边。横向操作向它影响的两个点连容量为1的边,每个点还需要向影响它的纵向的合并操作连容量为1的点。发现这时候...原创 2019-09-12 16:49:42 · 475 阅读 · 0 评论 -
【TC SRM 627】LaserTowersDiv1(最小割)
传送门题解:非法情况就是存在一条从横的炮台走到纵的炮台的路径。考虑利用最小割来构造一个不包含这样路径的攻击方案。首先所有炮台能够打到的位置中的最大值加入答案。源点向所有纵向攻击的炮台连边,所有横向攻击的炮台向汇点连边,容量为INF。所有非炮台点建立两个点,纵向向横向连边INF,表示割不掉。然后每个炮台拉出来一条链,相邻的点连边,容量为攻击更接近炮台的点会少攻击的敌人数。跑最小割,...原创 2019-09-12 14:57:31 · 261 阅读 · 0 评论 -
【TCO2016】ColorfulPath(平面图最短路转对偶图最小割)
传送门跑最大流的时候加法爆int了,WA了七次。题意简述:给一个DAG,记边从aia_iai到bib_ibi,边权cic_ici,要从000走到nnn,求最短路。保证ai<bia_i<b_iai<bi,而且不存在ai<aj<bi<bja_i<a_j<b_i<b_...原创 2019-09-12 10:43:09 · 225 阅读 · 0 评论 -
【FJWC2019】最短路(最小割)(二分答案)
给你一张 n 个点 m 条边的无向图,走过每条边都需要花费 1 秒。给你一个整数 k ,请你选择至多 k 个点,令经过这些点也需要花费 1 秒,使得从点 0 走到点 n−1 的最短时间最大。输出这个最大值。注意,不能选择点 0 或点 n−1 。对于全部数据,2≤n≤100,1≤m≤n×(n−1)/2,0≤k≤n2≤n≤100,1≤m≤n×(n−1)/2,0≤k≤n2≤n≤100,1≤m≤n...原创 2019-08-02 21:10:38 · 412 阅读 · 0 评论 -
【51nod1325】两棵树的问题(最大权闭合子图)
传送门题解:太久没写网络流了,连加边都写错了,居然还TM过了80%的点,出题人该被拖出去阿鲁巴很显然这是一个冲突建模,由于数据范围实在太小,我们考虑枚举每一个点必选,然后它作为根,那么限制条件就很明显了,选了节点uuu就必须选节点uuu的父亲,然后最大化所有选了点的权值和。显然是最大权闭合子图。代码:#include<bits/stdc++.h>#define ll ...原创 2019-07-02 19:29:43 · 146 阅读 · 0 评论 -
【清华集训2012】【BZOJ2561】最小生成树(最小割)
传送门解析:显然就是说u,vu,vu,v不能直接通过权值大于或小于LLL的边直接连起来。那么把权值大于或小于LLL的边全部拿出来,分别建图。显然要不使u,vu,vu,v联通,直接上ISAP跑最小割就行了。代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_c...原创 2019-04-04 19:43:12 · 273 阅读 · 0 评论 -
2019.03.31【CQOI2016】【洛谷P4123】【BZOJP4519】【LOJ2042】 不同的最小割(最小割树)
洛谷传送门BZOJ传送门LOJ传送门解析:显然就是求树上有多少不同的边权,树都不用建出来,直接用一个set统计一下就行了。代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inli...原创 2019-03-31 11:37:04 · 125 阅读 · 0 评论 -
2018.10.21【网络流24题】【洛谷P2762】【LOJ6001】太空飞行计划(最小割)
洛谷传送门LOJ传送门解析:感觉好像就是这道题的弱化版。。。所以不如先把上面这道题A了再来做这道?不过这里就只需要仪器向汇点连边,项目向源点连边,仪器和对应项目之间连容量为INFINFINF的边就行了。关于输出方案:其实本来想记录一下每条需要的边的位置,根据最终容量计算的,后来发现不需要。我们只需要找出最后一次Din...原创 2018-10-21 20:18:02 · 125 阅读 · 0 评论 -
【题目泛做】最大获利(0/1分数规划)(最大权闭合子图)
题解:发现那个关于代价的二次函数实际上就是生效的实际贡献数量,然后二分答案,就是一个最大权闭合子图。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using std::cout;cs int N=5e3+7,M=5...原创 2019-09-17 20:45:10 · 141 阅读 · 0 评论