【网络流24题】太空飞行计划
题目
链接:LOJ P6001
洛谷P2762
解法
考虑网络流建模。设置点111 ~ N" role="presentation" style="position: relative;">NNN表示每种仪器,点N+1N+1N+1 ~ N+MN+MN+M表示每个项目,超源SSS,超汇T" role="presentation" style="position: relative;">TTT。从SSS向所有项目各连一条边(S,j,capacity=pj)" role="presentation" style="position: relative;">(S,j,capacity=pj)(S,j,capacity=pj)(S,j,capacity=p_j),从所有仪器各向TTT连一条边(k,T,capacity=ck)" role="presentation" style="position: relative;">(k,T,capacity=ck)(k,T,capacity=ck)(k,T,capacity=c_k),从每个实验向其所需的仪器连边(j,k,capacity=+∞)(j,k,capacity=+∞)(j,k,capacity=+\infty),答案即为所有实验的总收益减去最大流。
于是,正确性?
首先考虑所有被选择的点,假设这些点所代表的每个项目净收益都为正,项目jjj所需的仪器集合为K" role="presentation" style="position: relative;">KK\mathbb K,那么由于每个项目的净收益为正,有∀j,pj⩾∑x∈K∀j,pj⩾∑x∈K\forall j,p_j\geqslant\sum x\in\mathbb K,故该项目在模型中对最大流的贡献为∑x∈K∑x∈K\sum x\in \mathbb K。
对于未被选择的项目,它们的净收益一定为负,那么其对最大流的贡献为pjpjp_j。
综上,在总净收益最大的情况下若一个项目被选择,其对最大流的贡献等于其净收益;若其未被选择,其对最大流的贡献等于其收益(pj)(pj)(p_j)。因此答案为所有实验的总收益减去最大流。
代码
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#include<queue>using namespace std;struct edge{int v,c;edge():v(0),c(0){}edge(int y,int d):v(y),c(d){}
};const int INF=1000000000;
vector<int> point[103];
vector<edge> vec;
char ch;
int N,M,K[51],W[51],S,T,x,ans,d[103],p[103];inline void addedge(int x,int y,int c,int i=0){point[x].push_back(vec.size());vec.push_back(edge(y,c));point[y].push_back(vec.size());vec.push_back(edge(x,0));}bool bfs(){queue<int> q;q.push(S);memset(d,0,sizeof(d));d[S]=1;while(!q.empty()){int u=q.front();q.pop();for(int i:point[u]){edge e=vec[i];int v=e.v,c=e.c;if(!d[v]&&c)q.push(v),d[v]=d[u]+1;}}return d[T];
}int dfs(int u,int f){if(u==T)return f;for(int &i=p[u];i<point[u].size();++i){edge e=vec[point[u][i]];int v=e.v,c=e.c,fl;if(d[v]==d[u]+1&&c&&(fl=dfs(v,min(f,c)))){vec[point[u][i]].c-=fl;vec[point[u][i]^1].c+=fl;return fl;}}return 0;
}int main(){scanf("%d%d",&M,&N);T=(S=N+M+1)+1;for(int i=1;i<=M;++i){scanf("%d",K+i),ans+=K[i],addedge(S,i+N,K[i]);ch=0;while(ch!='\r'&&ch!='\n')scanf("%d",&x),addedge(i+N,x,INF),ch=getchar();}for(int i=1;i<=N;++i)scanf("%d",W+i),addedge(i,T,W[i]);while(bfs()){int d;memset(p,0,sizeof(p));while(d=dfs(S,INF))ans-=d;}for(int i=1;i<=M;++i)if(d[i+N])printf("%d ",i);puts("");for(int i=1;i<=N;++i)if(d[i])printf("%d ",i);puts("");printf("%d",ans);
}
【网络流24题】太空飞行计划相关推荐
- Cogs 727. [网络流24题] 太空飞行计划(最大权闭合子图)
[网络流24题] 太空飞行计划 ★★☆ 输入文件:shuttle.in 输出文件:shuttle.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] W 教授正在为国家航天中心计 ...
- 线性规划与网络流24题 太空飞行计划问题 (最小割及输出方案)
太空飞行计划问题 题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,-,Em},和进行这些实验需 ...
- 网络流24题-太空飞行计划
WWW 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合 E=E1,E2,⋯,EmE=E_1,E_2,⋯,E_mE=E1,E ...
- [网络流24题]太空飞行计划
分析 最大权闭合子图模板题 把实验获得的收益看成正权点,仪器费用看成负权点,每个实验向所需要的仪器连边 跑最大权闭合子图即可 详见https://www.cnblogs.com/birchtree/p ...
- 【网络流24题】餐巾计划问题(最小费用最大流)
[网络流24题]餐巾计划问题(最小费用最大流) 题面 COGS 洛谷上的数据范围更大,而且要开longlong 题解 餐巾的来源分为两种: ①新买的 ②旧的拿去洗 所以,两种情况分别建图 先考虑第一种 ...
- 【hjmmm网络流24题补全计划】
本文食用方式 按ABC--分层叙述思路 可以看完一步有思路后自行思考 飞行员配对问题 题目链接 这可能是24题里最水的一道吧... 很显然分成两个集合 左外籍飞行员 右皇家飞行员 跑二分图最大匹配 输 ...
- 【网络流24题补全计划】
本文食用方式 按ABC--分层叙述思路 可以看完一步有思路后自行思考 飞行员配对问题 题目链接 这可能是24题里最水的一道吧... 很显然分成两个集合 左外籍飞行员 右皇家飞行员 跑二分图最大匹配 输 ...
- 网络流24题之餐巾计划问题
题目链接:传送门 时间有点赶,所以写的简略一些了. dalao:这道题不是看看就出来了吗? me:这道题十分难想啊!!!!图好难建啊!!!!但是想到以后就是一个裸题啊!! 要拆点,将每天拆为早上和晚上 ...
- [网络流24题][CODEVS1237]餐巾计划问题(费用流)
题目描述 传送门 题解 拆点,把每天的点拆成xi和yi,xi表示每一天的脏毛巾,yi表示每一天的新毛巾. 从超级源向xi连边,容量为ri,费用为0: 从yi向超级汇连边,容量为ri,费用为0: 从超级 ...
- [网络流24题] No2_太空飞行计划
727. [网络流24题] 太空飞行计划 ★★☆ 输入文件:shuttle.in 输出文件:shuttle.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] W ...
最新文章
- 8个步骤成功拖垮新业务线!
- android+5系统,Android2.3.5系统+华为UI
- 博客园自定义页面风格设计 后续篇(页面设计模式及代码高亮 鼠标点击效果升级)...
- 未来网络经济的99个趋势报告
- Coins POJ - 1742(多重背包+是否装满问题)
- 【POJ1177】【HDU1828】【codevs2149】矩形面积周长并
- 2017.3.15 余数之和sum 失败总结
- 最新PHP乐购社区源码+点卡购物系统
- 旋转矩阵中6保6_双色球旋转矩阵公式中6保4的
- 怎样批量修改图片格式
- 上海仰邦BX-5K1,BX-5K2系列板卡加入定时开关指令后死机现象及解决方案
- js中ajax提交表单提交表单提交,JS中ajax请求提交form表单
- 力扣刷题 DAY_64 回溯
- 【成长访谈】周新林:靠持续的努力,总能换来自己期望的生活
- 大学生笔记本选Mac还是Windows?
- Linux命令之chown
- 如何用好MindMapper中的便签
- Revert R12.1.3 Homepage Layout to Link Style as in R12.1.1 or 11i
- VR家居解决方案,打造可“移动”的家居体验馆
- P1522 牛的旅行 Cow Tours(floyd)