PowerOJ 1737 网络流24题之二 太空飞行计划问题

原题地址
https://www.oj.swust.edu.cn/problem/show/1737

题意:
W 教授正在为国家航天中心计划一系列的太空飞行。每次太空飞行可进行一系列商业
性实验而获取利润。现已确定了一个可供选择的实验集合E={E1,E2,…,Em},和进行这
些实验需要使用的全部仪器的集合I={I1,I2,…In}。实验Ej需要用到的仪器是I的子集Rj。
配置仪器Ik的费用为ck美元。实验Ej的赞助商已同意为该实验结果支付pj美元。W教授的
任务是找出一个有效算法,确定在一次太空飞行中要进行哪些实验并因此而配置哪些仪器才
能使太空飞行的净收益最大。这里净收益是指进行实验所获得的全部收入与配置仪器的全部
费用的差额。
«编程任务:
对于给定的实验和仪器配置情况,编程找出净收益最大的试验计划。

数据范围
王晓东《线性规划和网络流24题》系列题目不需要管output.txt,是标准输入输出,多文件单数据。
所有题目中n的值一般小于150.

题解:

一篇最大权闭合子图博客
S向正边权点连边,权值为该点点权,负权点向T连边,权值为该点点权绝对值。正点向负点的边照连。
于是我们先把答案加上所有的正点点权和,然后跑最小割,答案减去最小割。
考虑其意义:
割掉一条S->u的边,表示不选这个实验,(减去其值)
割掉一条v->T的边,表示选择这个仪器,(减去其值)
一个实验,要么不选它,要么选择它(它的所有仪器)
于是是对应的。
输出方案就是残余图上与S联通的点(选择的),于是通过最后一次bfs的vis判断即可。

代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int N=10010;
const int inf=0x3f3f3f3f;
queue<int> Q;
int S,T,n,m,head[N],to[2*N],w[2*N],nxt[2*N],num=1,sum=0,dep[N];
bool vis[N];
void build(int u,int v,int ww)
{num++;to[num]=v; nxt[num]=head[u]; w[num]=ww; head[u]=num;num++;to[num]=u; nxt[num]=head[v]; w[num]=0; head[v]=num;
}
bool bfs()
{while(!Q.empty()) Q.pop();memset(vis,0,sizeof(vis));Q.push(S); vis[S]=1; dep[S]=1;while(!Q.empty()){int u=Q.front(); Q.pop();for(int i=head[u];i;i=nxt[i]){int v=to[i];if(vis[v]||w[i]<=0) continue;dep[v]=dep[u]+1;vis[v]=1; Q.push(v);}}return vis[T];
}
int dfs(int u,int d)
{if(u==T||d==0) return d;int ret=0;for(int i=head[u];i;i=nxt[i]){int v=to[i];if(dep[v]!=dep[u]+1||w[i]<=0) continue;int flow=dfs(v,min(d,w[i]));d-=flow; ret+=flow;w[i]-=flow; w[i^1]+=flow;if(d==0) break;}if(ret==0) dep[u]=-1;return ret;
}
int main()
{scanf("%d%d",&n,&m);S=n+m+1; T=n+m+2;for(int i=1;i<=n;i++){int c; scanf("%d",&c);build(S,i,c); sum+=c;while(getchar()==' '){int x;scanf("%d",&x);build(i,n+x,inf);}}for(int i=1;i<=m;i++){int c;scanf("%d",&c);build(n+i,T,c);}while(bfs()) sum-=dfs(S,inf);for(int i=1;i<=n;i++) if(vis[i]) printf("%d ",i); puts("");for(int i=n+1;i<=n+m;i++) if(vis[i]) printf("%d ",i-n); puts("");printf("%d\n",sum);return 0;
}

PowerOJ 1737 网络流24题之二 太空飞行计划问题(最大权闭合子图)相关推荐

  1. 刷题总结——太空飞行计划(最大权闭合子图用最大流解决)

    题目: 题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合 E={E1,E2,-,Em},和进行这些实验需要使用的 ...

  2. 【网络流24题-2】太空飞行计划 网络流

    题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合 E={E1,E2,-,Em},和进行这些实验需要使用的全部仪器 ...

  3. luogu P2762 太空飞行计划问题(最大权闭合图)

    luogu P2762 太空飞行计划问题(最大权闭合图) 题目大意 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={ ...

  4. 线性规划与网络流24题 2太空飞行计划问题 最大权闭合图问题(不懂) nefu 476

    太空飞行计划问题 Time Limit 1000ms Memory Limit 65536K description W教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而 ...

  5. 二、太空飞行计划问题 [最大权闭合图]

    太空飞行计划问题 问题描述: W教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,-,Em},和进行这些实验需 ...

  6. 洛谷 - P2762 太空飞行计划问题(最大权闭合图+路径打印)

    题目链接:点击查看 题目大意:给出n个实验,每个实验完成之后都可以得到一定的奖金,但每个实验需要特殊的器械才可以完成,准备器械又需要一定的支出,现在问如何选择实验才能让利润最大化,并输出需要选择的实验 ...

  7. [刷题记录] luogu网络流24题 及 网络流心得体会 及 经典模型不定期更新

    文章目录 信息汇总表格 飞行员配对方案问题 分配问题 运输问题 数字梯形问题 最小路径覆盖问题 魔术球问题 圆桌问题 试题库问题 深海机器人问题 航空路线问题 火星探险问题 太空飞行计划问题 方格取数 ...

  8. 「网络流24题」 题目列表

    「网络流24题」 题目列表 序号 题目标题 模型 题解 1 飞行员配对方案问题 二分图最大匹配 <1> 2 太空飞行计划问题 最大权闭合子图 <2> 3 最小路径覆盖问题 二分 ...

  9. NKOI 1937 太空飞行计划

    [线性规划与网络流24题 2]太空飞行计划 Time Limit:10000MS  Memory Limit:65536K Total Submit:36 Accepted:13  Case Time ...

最新文章

  1. mysql数据没有真正提交,转MySQL 批量提交优化
  2. 短短6小时,AI设计出40000种毒气分子,很多毒性远超战用神经毒剂
  3. 计算机进位计数制实训课教案,《计算机应用基础》职高2010修订版 教案.doc
  4. 【跃迁之路】【685天】程序员高效学习方法论探索系列(实验阶段442-2019.1.4)...
  5. 数学中的向量乘积和矩阵乘积总结
  6. winform中openfiledialog过滤压缩文件格式_什么是最佳图像格式?不同的文件格式及其特点...
  7. ubuntu安装matlab2009,Ubuntu中安装Matlab2010a
  8. gdc服务器故障输入信号超出范围,H1Z1信号输入超出范围 | 手游网游页游攻略大全...
  9. 汇知考轻松职称计算机辅导软件,汇知考轻松
  10. 2-30hashlib模块讲解
  11. 保时捷推出Taycan 4S电动汽车 售价10.38万美元起
  12. Hibernate 马上入门(二)
  13. C++实现离散余弦变换(参数为二维指针)
  14. 戴尔R730从U盘启动
  15. 服务器芯片组驱动,Intel芯片组INF驱动9.1.1.1027 For Windows7
  16. 深大uooc学术道德与学术规范教育第一章
  17. 想客户所想,这个客服有“读心术”
  18. ArcGIS符号导入图片
  19. win10用caffe训练自己的数据
  20. 区块链:信仰亦需理性

热门文章

  1. jmeter 使用BeanShell编写java代码提取请求参数
  2. YL芯片LVDS屏幕时序和接口介绍
  3. *♎* 埃斯顿机器人回零教程 *♎*
  4. 新版余额宝终于不限额了!
  5. 2021年爆火的“元宇宙”,是真风口还是资本骗局下的割韭菜?
  6. 初识神经网络——损失函数
  7. Unity插件FogofWar详细学习笔记
  8. 2023年java面试题之Socket
  9. 十句让生活更美好的英语箴言
  10. pytest官方的帮助文档(英文原版)