线性规划与网络流24题 太空飞行计划问题 (最小割及输出方案)
题目描述
«编程任务:
对于给定的实验和仪器配置情况,编程找出净收益最大的试验计划。
输入
输出
样例输入
2 3 10 1 2 25 2 3 5 6 7
样例输出
1 2 1 2 3 17
题意:不多说。
分析:最大流=最小割,净收益=所有资助费用-最小割。只要利润不为负的实验都要做,都要输出来。
#include<stdio.h>
#include<string.h>
#include<vector>
#include<sstream>
#include<queue>
#include<algorithm>
#define maxn 1000
#define inf 0x7fffffff
using namespace std;
struct edge
{int from,to,cap,flow;
};
vector<edge> edges;
vector<int> G[maxn];
int d[maxn],cur[maxn];
bool vis[maxn];
int s,t;
void init()
{for(int i=0;i<maxn;i++) G[i].clear();edges.clear();
}
void add(int from,int to,int cap)
{edges.push_back((edge){from,to,cap,0});edges.push_back((edge){to,from,0,0});int m=edges.size();G[from].push_back(m-2);G[to].push_back(m-1);
}
bool bfs()
{memset(vis,false,sizeof(vis));memset(d,0,sizeof(d));queue<int> q;q.push(s);d[s]=0,vis[s]=true;while(!q.empty()){int x=q.front();q.pop();for(int i=0;i<G[x].size();i++){edge& e=edges[G[x][i]];if(!vis[e.to]&&e.cap>e.flow){vis[e.to]=true;d[e.to]=d[x]+1;q.push(e.to);}}}return vis[t];
}
int dfs(int x,int a)
{if(x==t||a==0) return a;int flow=0,f;for(int& i=cur[x];i<G[x].size();i++){edge& e=edges[G[x][i]];if(d[x]+1==d[e.to]&&(f=dfs(e.to,min(a,e.cap-e.flow)))>0){e.flow+=f;edges[G[x][i]^1].flow-=f;flow+=f;a-=f;if(a==0) break;}}return flow;
}
int maxflow()
{int flow=0;while(bfs()){memset(cur,0,sizeof(cur));flow+=dfs(s,inf);}return flow;
}
bool fg[400];
int cnt[300];
char sss[300];
int main()
{int m,n;while(scanf("%d%d",&m,&n)==2){int c,x,y;init();s=0,t=m+n+1;int sum=0;memset(cnt,0,sizeof(cnt));for(int i=1;i<=m;i++){scanf("%d",&c);sum+=c;add(s,i,c);getchar();gets(sss);stringstream ss(sss);while(ss>>x){cnt[i]++;add(i,x+m,inf);}}for(int i=1;i<=n;i++){scanf("%d",&c);add(i+m,t,c);}int ans=maxflow();memset(fg,false,sizeof(fg));for(int i=m+1;i<=n+m;i++){for(int j=0;j<G[i].size();j++){edge& e=edges[G[i][j]];if(e.from>e.to||e.to!=t||e.cap==inf) continue;for(int k=0;k<edges.size();k++){int u=edges[k].from,v=edges[k].to;if(u>v) continue;edges[k].flow=edges[k^1].flow=0;edges[k^1].cap=0;}int tem=e.cap;e.cap=0;int me=maxflow();e.cap=tem;if(ans-me==tem) fg[e.from]=true;}}for(int i=m+1;i<=n+m;i++){if(!fg[i]) continue;for(int j=0;j<G[i].size();j++){edge e=edges[G[i][j]];if(e.to==t) continue;cnt[e.to]--;}}for(int i=1;i<=m;i++) if(!cnt[i]) printf("%d ",i); puts("");for(int i=m+1;i<=n+m;i++) if(fg[i]) printf("%d ",i-m); puts("");printf("%d\n",sum-ans);}return 0;
}
线性规划与网络流24题 太空飞行计划问题 (最小割及输出方案)相关推荐
- Cogs 727. [网络流24题] 太空飞行计划(最大权闭合子图)
[网络流24题] 太空飞行计划 ★★☆ 输入文件:shuttle.in 输出文件:shuttle.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] W 教授正在为国家航天中心计 ...
- 网络流24题-太空飞行计划
WWW 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合 E=E1,E2,⋯,EmE=E_1,E_2,⋯,E_mE=E1,E ...
- [网络流24题]太空飞行计划
分析 最大权闭合子图模板题 把实验获得的收益看成正权点,仪器费用看成负权点,每个实验向所需要的仪器连边 跑最大权闭合子图即可 详见https://www.cnblogs.com/birchtree/p ...
- 解题报告:线性规划与网络流24题
目录 A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] B.太空飞行计划问题(最大权闭合图转最小割.最小割方案输出)[省选/NOI- ] C.最小路径覆盖问题(有向无环图最小路 ...
- 【网络流24题】餐巾计划问题(最小费用最大流)
[网络流24题]餐巾计划问题(最小费用最大流) 题面 COGS 洛谷上的数据范围更大,而且要开longlong 题解 餐巾的来源分为两种: ①新买的 ②旧的拿去洗 所以,两种情况分别建图 先考虑第一种 ...
- 囧——线性规划与网络流24题之网络流入门经典
搞了好久终于搞定线性规划与网络流24题,不过机器人路径至今无解,第22题感觉是数据错了~~~ 我的代码,数据和题目题解是BYVoid那弄到的:http://download.csdn.net/sour ...
- [线性规划与网络流24题] 网络流常见模型
最近两个月在做<线性规划与网络流24题>这套题,加深了对网络流的理解. 涵盖到的模型有:二分图匹配.二分图的最大独立集.最大权闭合图.有向无环图的最小路径覆盖.最多不相交路径.最大权不相交 ...
- 题解:线性规划与网络流24题 T2 太空飞行计划问题
太空飞行计划问题 问题描述 W教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,-,Em},和进行这些实验需要 ...
- 线性规划与网络流24题 2太空飞行计划问题 最大权闭合图问题(不懂) nefu 476
太空飞行计划问题 Time Limit 1000ms Memory Limit 65536K description W教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而 ...
最新文章
- R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(设置图例位置、移除图例)实战
- Java和C语言的语句对比
- 王琦:5G新视频应用的机会窗口将在2-3年内
- Python 通过 pip 安装第三方模块成功,导入该模块失败的解决方法
- JSP实战型程序连载:通用数据库连接JavaBean
- 引commons-io工具类做文件的复制及导出
- SaltStact自动化运维工具03
- vlan网络隔离实验
- macOS 如何设置壁纸
- 计算机无法安装蓝牙驱动,W7系统蓝牙驱动安装失败的原因分析与解决方法
- pmf源解析_科研进展 | 不同燃烧排放的一次有机物源谱特征及其在源解析中的应用...
- 【读书笔记】之蔡康永的说话之道2
- 非参数与半参数统计之核函数
- 51单片机——8X8点阵显示
- 2019专业创业赛事活动平台
- 联想Y450 MAC系统SD读卡器驱动
- ERROR:C2678 二进制“<”: 没有找到接受“const _Ty”类型的左操作数的运算符(或没有可接受的转换)
- t30服务器u盘如何安装系统,无光驱使用U盘/Ukey/闪存/启动电脑安装winxp sp3的操作系统--梦飞翔的地方(梦翔天空)...
- 使用poi将数据库数据表中的数据导出成excel
- SVG滤镜+阴影+渐变--学习笔记
热门文章
- 8000字详解银行业数据治理架构体系搭建
- VS2019安装VA X插件过程
- Java制导软件_GitHub - yaoceyi/JavaCC: JavaCC实现简易编译器
- 饼图自定义legend文字内容,以及饼图中间显示数量 ,中国地图制作
- flink将数据写入redis
- js尝试 新年倒计时2023
- tec控制pid程序_利用 SPICE 设计 TEC 温度环路 PID 控制
- 最全的9款3D建模软件介绍
- 基于javaweb的酒店客房管理系统(java+jsp+html+bootstrap+jquery+servlet+mysql)
- 如何引用YouTube视频?(APA、MLA、芝加哥、温哥华格式)