搭配飞行员问题

 

最简单的一道题

就是一个二分图匹配

 

太空飞行计划

 

最大权闭合子图

什么叫"最大权闭合子图"呢?

就是给定一个有向图,在里面选择一个点集,使得点集中的点没有连向点集外的点的边,并且每个点都有一个权值,使得这个点集的权值最大

我们把实验做成点,材料做成点,每个实验要用哪些材料我们就连上去

一个闭合子图就对应着一个方案,我们把实验的收益当成实验对应的点的权值,材料的花费的相反数当成材料对应的点的权值,然后就是最大权闭合子图了

 

怎么求解呢?

我们建立源点s和汇点t,将s向所有正权值的点连边,边权为这个权值,将所有负权值的点向t连边,边权为负权值的相反数,图内部的边边权设置为inf

然后跑一边最大流,正权值的和减去流量就是答案了

 

原理

首先我们看一个流对应的割

一个割的定义就是把点集分成两半,s在一个里面,t在另一个里面,不存在s到t的路径

再看闭合子图的定义,就是子图内部的点不能连向外部的点 那么我们就把内部的点和s放在一起,把剩下的点和t放在一起,因为定义,不存在S到T的边,所以这就是一个割

不难发现任何一个割都对应着一个闭合子图

我们要求的是闭合子图里面点的权值和,就是正权值的和-负权值的绝对值的和

那么这个割的大小是什么呢?

因为原图里面边的权值都是inf,所以割肯定割的是s连出去的边和连向t的边

那么子图内部的点和t之间没有边,子图外部的点和s之间没有边,我们假设闭合子图的点集为$set$,那么割的大小就是 $\sum_{u \notin set \& (s,u)\in E} {cost(s,u)}+\sum_{u \in set \& (u,t)\in E}cost(u,t)$

我们要计算的是$\sum_{u \in set \& (s,u)\in E} {cost(s,u)}-\sum_{u \in set \& (u,t)\in E}cost(u,t)$,不难发现这就等于$\sum_{u \in V \& (s,u) \in E}{cost(s,u)}$剪掉割的大小

前面那个是定值,所以只要求最小割就可以了

 

输出方案

流是如何转化为割的呢? 其实就是把满流的边割掉

所以我们再从s增广一次,能够增广到的点就是最终点集中的点

 

网络流24题 一句话题解(updating)的更多相关文章

  1. 【题解】【网络流24题】航空路线问题 [P2770] [Loj6122]

    [题解][网络流24题]航空路线问题 [P2770] [Loj6122] 传送门:航空路线问题 \([P2770]\) \([Loj6122]\) [题目描述] 给出一张有向图,每个点(除了起点 \( ...

  2. 【题解】【网络流24题】汽车加油行驶问题 [P4009] [Loj6223]

    [题解][网络流24题]汽车加油行驶问题 [P4009] [Loj6223] 传送门:汽车加油行驶问题 \([P4009]\) \([Loj6223]\) [题目描述] 给出一个 \(N \times ...

  3. [网络流24题]最长k可重区间集[题解]

    最长 \(k\) 可重区间集 题目大意 给定实心直线 \(L\) 上 \(n\) 个开区间组成的集合 \(I\) ,和一个正整数 \(k\) ,试设计一个算法,从开区间集合 \(I\) 中选取开区间集 ...

  4. 【线性规划与网络流 24题】已完成(3道题因为某些奇怪的原因被抛弃了QAQ)

    写在前面:SDOI2016 Round1滚粗后蒟蒻开始做网络流来自我拯救(2016-04-11再过几天就要考先修课,现在做网络流24题貌似没什么用←退役节奏) 做的题目将附上日期,见证我龟速刷题. 1 ...

  5. LOJ6000 - 「网络流 24 题」搭配飞行员

    原题链接 题意简述 求二分图的最大匹配. 题解 这里写的是匈牙利算法. 表示节点的当前匹配. 为真表示在这一轮匹配中,无法给节点一个新的匹配.所以如果为真就不用再dfs它了,直接continue就好. ...

  6. 【网络流24题】最长k可重线段集(费用流)

    [网络流24题]最长k可重线段集(费用流) 题面 Cogs的数据有问题 Loj 洛谷 题解 这道题和最长k可重区间集没有区别 只不过费用额外计算一下 但是,还是有一点要注意的地方 这里可以是一条垂直的 ...

  7. 【网络流24题】最长k可重区间集(费用流)

    [网络流24题]最长k可重区间集(费用流) 题面 Cogs Loj 洛谷 题解 首先注意一下 这道题目里面 在Cogs上直接做就行了 洛谷和Loj上需要判断数据合法,如果\(l>r\)就要交换\ ...

  8. 【刷题】LOJ 6227 「网络流 24 题」最长k可重线段集问题

    题目描述 给定平面 \(\text{xoy}\) 上 \(n\) 个开线段组成的集合 \(\text{I}\) ,和一个正整数 \(k\) ,试设计一个算法. 从开线段集合 \(\text{I}\) ...

  9. 【刷题】LOJ 6121 「网络流 24 题」孤岛营救问题

    题目描述 1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图.迷宫的外形是一个长方形 ...

随机推荐

  1. linux 输入子系统(1) -Event types

    输入系统协议用类型types和编码codecs来表示输入设备的值并用此来通知用户空间的应用程序. input协议是一个基于状态的协议,只有当相应事件编码对应的参数值发生变化时才会发送该事件.不过,状态 ...

  2. Python调用C/Fortran混合的动态链接库--上篇

    内容描述: 在32位或64位的windows或GNU/Linux系统下利用Python的ctypes和numpy模块调用C/Fortran混合编程的有限元数值计算程序 操作系统及编译环境: 32bit ...

  3. POJ 2482 Stars in Your Window(线段树+扫描线)

    题目链接 非常不容易的一道题,把每个点向右上构造一个矩形,将问题转化为重合矩形那个亮度最大,注意LL,注意排序. #include <cstdio> #include <cstrin ...

  4. js replace()实现全部替换

    var r= "1\n2\n3\n"; //将字母\n替换成分号 alert(r.replace("\n",";")); 结果:1;2\n3 ...

  5. Velocity模板引擎笔记

    模板引擎中判断对象是否为空: #if(!${jsonObj.data.buyerName} || ${jsonObj.data.buyerName} == '')         <p>采 ...

  6. A喝酒(北京林业大学校赛)

    http://www.jisuanke.com/contest/1410 王大钉喜欢喝酒,存货都喝完了,他就去楼下买,正好楼下的商店为了响应学校的 ACM 校赛推出了优惠活动:凡是在本店买的啤酒,喝完 ...

  7. Windows下VMware虚拟机使用Centos,Docker方式安装openstf的小坑

    今天使用docker方式安装openstf碰到了一小坑,坑了我半天.特此记录! docker方式安装stf就不说了,网上教程一大把. 但是... 安装完之后.进入web控制界面,手机连接的好好的.但硕 ...

  8. Java DES加密解密

    import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpe ...

  9. 用jetty起maven工程debug报source not found

    之前基本都是tomcat启maven本工程 惯性的处理方式是 直接点击lookup source 直接先删除default工程 然后选择导入java project 找到源码所在的工程 但是一般情况下 ...

  10. vscode——配置终端集成bash和cmd

    前言 配置后bash和cmd是集成的,输入bash回车则进入bash,输入cmd回车则进入cmd 步骤 首先肯定是需要打开我们的vscode咯~ 进入终端设置 配置shell路径 根据自己的系统来复制 ...