问题描述

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

数据输入

文件第1行有2 个正整数m和n。m是实验数,n是仪器数。 接下来的m 行,每行是一个实验的有关数据。第一个数赞助商同意支付该实验的费用;接着是该实验需要用到的若干仪器的编号。最后一行的n个数是配置每个仪器的费用。

结果输出

最佳实验方案。第1 行是实验编号;第2行是仪器编号;最后一行是净收益。

输入样例

2 3
10 1 2
25 2 3
5 6 7

输出样例

1 2
1 2 3
17

限制

1<=n,m<=50

时间:1S

空间:256MB

题解

https://www.cnblogs.com/zhenghaotian/p/6929083.html

https://yq.aliyun.com/ziliao/290204

http://www.cnblogs.com/wuyiqi/archive/2012/03/12/2391960.html

残量网络中和源点连通的点的集合(不包括源点)即为选中的

#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;
const int N=150,M=50*50*4+105,inf=1047483647;
int n,m,s=101,t=102,ans;
int num=1,last[N],nxt[M],ver[M],c[M];
inline void add(int x,int y,int z){nxt[++num]=last[x]; last[x]=num; ver[num]=y; c[num]=z;nxt[++num]=last[y]; last[y]=num; ver[num]=x; c[num]=0;}queue<int> q;int d[N],cur[N]; inline bool bfs(){memset(d,0,sizeof(d));while(!q.empty()) q.pop();q.push(s); d[s]=1;for(int i=1;i<=110;i++) cur[i]=last[i];while(!q.empty()){int x=q.front(); q.pop();for(int i=last[x],y;i;i=nxt[i]){if(!d[y=ver[i]] && c[i])d[y]=d[x]+1,q.push(y);}}return d[t]>0;  }int dfs(int x,int flow){if(x==t) return flow;int rest=flow;for(int i=cur[x],y;i && rest;i=nxt[i]){cur[x]=i; y=ver[i]; if(d[y]==d[x]+1 && c[i]){int f=dfs(y,min(c[i],rest));if(f==0) d[y]=0;c[i]-=f; c[i^1]+=f;rest-=f;}}return flow-rest; }
inline bool read(int &re)
{  re=0; char ch = getchar();while (!('0'<= ch && ch<='9')) { if(ch == '\n') return 0; ch=getchar(); }while ('0'<= ch && ch<='9')  { re=re*10+ch-'0'; ch=getchar(); }return ch!='\n';
}int main()
{scanf("%d%d",&m,&n); int r;      for(int i=1;i<=m;i++)    {scanf("%d",&r); ans+=r;add(s,i,r);while(read(r)) {add(i,r+50,inf);}add(i,r+50,inf);}for(int i=1;i<=n;i++){scanf("%d",&r); add(i+50,t,r);}      while(bfs())while(int flow=dfs(s,inf)) ans-=flow;for(int i=1;i<=m;i++) if(d[i]) printf("%d ",i);printf("\n");for(int i=1;i<=n;i++) if(d[i+50]) printf("%d ",i); printf("\n%d",ans);
return 0;
}

转载于:https://www.cnblogs.com/YuXiaoze/p/10679503.html

【网络流24题】太空飞行计划问题相关推荐

  1. Cogs 727. [网络流24题] 太空飞行计划(最大权闭合子图)

    [网络流24题] 太空飞行计划 ★★☆ 输入文件:shuttle.in 输出文件:shuttle.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] W 教授正在为国家航天中心计 ...

  2. 线性规划与网络流24题 太空飞行计划问题 (最小割及输出方案)

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

  3. 网络流24题-太空飞行计划

    WWW 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合 E=E1,E2,⋯,EmE=E_1,E_2,⋯,E_mE=E1​,E ...

  4. [网络流24题]太空飞行计划

    分析 最大权闭合子图模板题 把实验获得的收益看成正权点,仪器费用看成负权点,每个实验向所需要的仪器连边 跑最大权闭合子图即可 详见https://www.cnblogs.com/birchtree/p ...

  5. 【网络流24题】餐巾计划问题(最小费用最大流)

    [网络流24题]餐巾计划问题(最小费用最大流) 题面 COGS 洛谷上的数据范围更大,而且要开longlong 题解 餐巾的来源分为两种: ①新买的 ②旧的拿去洗 所以,两种情况分别建图 先考虑第一种 ...

  6. 【hjmmm网络流24题补全计划】

    本文食用方式 按ABC--分层叙述思路 可以看完一步有思路后自行思考 飞行员配对问题 题目链接 这可能是24题里最水的一道吧... 很显然分成两个集合 左外籍飞行员 右皇家飞行员 跑二分图最大匹配 输 ...

  7. 【网络流24题补全计划】

    本文食用方式 按ABC--分层叙述思路 可以看完一步有思路后自行思考 飞行员配对问题 题目链接 这可能是24题里最水的一道吧... 很显然分成两个集合 左外籍飞行员 右皇家飞行员 跑二分图最大匹配 输 ...

  8. 网络流24题之餐巾计划问题

    题目链接:传送门 时间有点赶,所以写的简略一些了. dalao:这道题不是看看就出来了吗? me:这道题十分难想啊!!!!图好难建啊!!!!但是想到以后就是一个裸题啊!! 要拆点,将每天拆为早上和晚上 ...

  9. [网络流24题][CODEVS1237]餐巾计划问题(费用流)

    题目描述 传送门 题解 拆点,把每天的点拆成xi和yi,xi表示每一天的脏毛巾,yi表示每一天的新毛巾. 从超级源向xi连边,容量为ri,费用为0: 从yi向超级汇连边,容量为ri,费用为0: 从超级 ...

  10. [网络流24题] No2_太空飞行计划

    727. [网络流24题] 太空飞行计划 ★★☆   输入文件:shuttle.in   输出文件:shuttle.out   简单对比 时间限制:1 s   内存限制:128 MB [问题描述] W ...

最新文章

  1. 9.Verilog端口定义以及模块例化和调用
  2. 数据挖掘方法论与工程化思考
  3. mysql完整字段包括_MySQL字段类型最全解析
  4. HTML照片墙 个性相册源码
  5. 添加一列_快速给电子书pdf添加书签
  6. 【Next Permutation】cpp
  7. 由遍历集合所联想到的一些问题
  8. 单链表的插入操作的实现(0952)SUWST-OJ
  9. php集合与数组的区别,php数组和链表的区别总结
  10. Java使用aspose合并两个PDF文件
  11. 介绍一个产品的思维导图_原来产品经理都是这样用思维导图的!
  12. 区块链通证经济的核心不在技术,而在于商业逻辑的重构
  13. MySql格式化小数保留小数点后两位
  14. “ ; ”老是忘!到底什么意思?
  15. word不能读出html表格,WORD里面表格不能自动跳到下一页解决方案
  16. js 时间戳转换成正确的时间格式(本地时间早八小时问题解决)
  17. 用 ATL ActiveX 绘制任意平面函数的曲线
  18. 文通表格票据识别系统介绍
  19. HP DL580 / DL380 G7 定制ESXI 6.0/6.5/6.7
  20. html查看已保存的密码,Chrome笔记之如何查看本地保存的密码

热门文章

  1. [计算机视觉实验一]基本的图像操作与处理
  2. linux管理光标显示与否
  3. thinkphp修改上传文件大小
  4. onMeasure()和onSizeChanged()
  5. 写一篇文章记录我的论文之路
  6. PS 十分钟教你做出文字穿插效果
  7. 美团面试全流程详解(一面 + 二面)
  8. 【解决方案】Command failed due to signal: Segmentation fault: 11
  9. 雅思N、NG专项(目标是保证一个都不错)
  10. IE中不能自动选择UTF-8编码的解决办法