题目

链接: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题】太空飞行计划相关推荐

  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. 8个步骤成功拖垮新业务线!
  2. android+5系统,Android2.3.5系统+华为UI
  3. 博客园自定义页面风格设计 后续篇(页面设计模式及代码高亮 鼠标点击效果升级)...
  4. 未来网络经济的99个趋势报告
  5. Coins POJ - 1742(多重背包+是否装满问题)
  6. 【POJ1177】【HDU1828】【codevs2149】矩形面积周长并
  7. 2017.3.15 余数之和sum 失败总结
  8. 最新PHP乐购社区源码+点卡购物系统
  9. 旋转矩阵中6保6_双色球旋转矩阵公式中6保4的
  10. 怎样批量修改图片格式
  11. 上海仰邦BX-5K1,BX-5K2系列板卡加入定时开关指令后死机现象及解决方案
  12. js中ajax提交表单提交表单提交,JS中ajax请求提交form表单
  13. 力扣刷题 DAY_64 回溯
  14. 【成长访谈】周新林:靠持续的努力,总能换来自己期望的生活
  15. 大学生笔记本选Mac还是Windows?
  16. Linux命令之chown
  17. 如何用好MindMapper中的便签
  18. Revert R12.1.3 Homepage Layout to Link Style as in R12.1.1 or 11i
  19. VR家居解决方案,打造可“移动”的家居体验馆
  20. P1522 牛的旅行 Cow Tours(floyd)

热门文章

  1. IOS 页面跳转问题:点击按钮页面不跳转
  2. 【Go Web学习笔记】第二章 HTTP的客户端实现
  3. FormData是什么
  4. 为什么要使用Spring,为什么要使用控制反转(IOC)和依赖注入(DI),为什么要使用AOP
  5. 程序员花式吐槽:月入过万累成狗,还不如富士康技术员!
  6. dnf修改服务器制裁24,DNF关于对非法第三方软件封号制裁的重申
  7. 安装麦咖啡8.7出现--错误1920,怎么办? 解决办法
  8. XP 小技巧( 隐藏文件、mp3转换WMA )
  9. ARM:植物微生物组的生态学与进化
  10. 黑莓android驱动程序,即将推出的Android驱动黑莓手机称为 Priv