题目描述

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

题目大意

给出可供选择的实验和器材的信息,包括实验经费(收入),各个器材的费用(支出),求选用某些实验取得的最大利润。

数据范围

(0 < m,n <= 100) m为实验数,n为仪器数

样例输入

2 3
10 1 2 0
25 2 3 0
5 6 7

样例输出

1 2
1 2 3
17

解题思路

  • 最大利润=总收入-最大流
  • 将实验与仪器看做二分图两部分的顶点,之间边权为无穷大
  • S与实验连边,权值为收入,仪器与T连边,权值为支出,
  • 答案就是总收入减去最大流

代码

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#define Maxn 205
#define Maxe 23333
using namespace std;
inline int Getint(){int x=0,f=1;char ch=getchar();while('0'>ch||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while('0'<=ch&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;}
int S,T,N,dis[Maxn],GAP[Maxn],h[Maxn],cnt,m,n;
struct node{int to,next,v,pair;}e[Maxe];
void AddEdge(int x,int y,int v,int pair){e[cnt]=(node){y,h[x],v,pair};h[x]=cnt;}
void AddEdge(int x,int y,int v){AddEdge(x,y,v,++cnt+1);AddEdge(y,x,0,++cnt-1);}
int SAP(int x,int Maxflow){if(x==T)return Maxflow;int tmp=Maxflow;for(int p=h[x];p;p=e[p].next){int y=e[p].to;int flow=min(tmp,e[p].v);if(flow&&dis[x]==dis[y]+1){int ret=SAP(y,flow);tmp-=ret;e[p].v-=ret;e[e[p].pair].v+=ret;if(!tmp||dis[S]==N)return Maxflow-tmp;}}if(--GAP[dis[x]]==0)dis[S]=N;else GAP[++dis[x]]++;return Maxflow-tmp;
}
bool vis[Maxn];
void Dfs(int x){vis[x]=1;for(int p=h[x];p;p=e[p].next){int y=e[p].to;if(!vis[y]&&e[p].v)Dfs(y);}
}
int SAP(){memset(dis,0,sizeof(dis));memset(vis,0,sizeof(vis));memset(GAP,0,sizeof(GAP));GAP[0]=N;int Ans=0;while(dis[S]<N)Ans+=SAP(S,1<<30);Dfs(S);for(int i=1;i<=m;i++)if(vis[i])cout<<i<<" ";cout<<"\n";for(int i=1;i<=n;i++)if(vis[i+m])cout<<i<<" ";cout<<"\n";return Ans;
}
int main(){m=Getint(),n=Getint();int Sum=0,k;S=0,T=m+n+1,N=T+1;for(int i=1;i<=m;i++){Sum+=k=Getint();AddEdge(S,i,k);while(int t=Getint())AddEdge(i,t+m,1<<30);}for(int i=1;i<=n;i++)AddEdge(m+i,T,Getint());cout<<Sum-SAP();return 0;
}

转载于:https://www.cnblogs.com/Cedric341561/p/6811056.html

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

  1. LibreOJ #6001. 「网络流 24 题」太空飞行计划 最大权闭合图

    #6001. 「网络流 24 题」太空飞行计划 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测 ...

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

    [网络流24题]太空飞行计划 Description W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,- ...

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

    原题链接 Description 有m(m≤50)个实验和n(n≤50)个仪器,做实验有报酬买仪器有花费.每个实验都需要一些仪器,求最大净收益(实验报酬−仪器花费),并输出一组方案. Solution ...

  4. 网络流24题之太空飞行计划——最大权闭合子图

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

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

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

  6. 题解:线性规划与网络流24题 T2 太空飞行计划问题

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

  7. 网络流24题——2.太空飞行计划问题

    题目链接 https://www.luogu.org/problemnew/show/P2762 太空飞行计划 我们从S向所有实验连流量为收入的边(割这条边选择不做这个实验) 从所有的机器向T连边(割 ...

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

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

  9. 【网络流24题】太空飞行计划问题

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

  10. 「网络流 24 题」太空飞行计划

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

最新文章

  1. 说说第三方支付接口开发及开发中遇到的坑爹问题
  2. Python常用的模块和简单用法
  3. springboot整合redis操作缓存(将查询到的数据放在缓存中)
  4. debian linux 安装smb 配置
  5. 402.移掉K位数字,使得剩下数字最小
  6. 如何把一个运行完好的Kafka搞崩溃
  7. 【OpenCV 例程200篇】41. 图像的灰度变换(灰度级分层)
  8. ASP.NET MVC 重点教程一周年版 第八回 Helper之演化
  9. 洛谷P4593 [TJOI2018]教科书般的亵渎(拉格朗日插值)
  10. Node学习记录: mongodb
  11. 维度灾难--通过Python理解高维空间欧氏距离与余弦相似度失效
  12. 最先进的Git分布式仓库系统——是如何提升编程效率的?
  13. react二级路由配置正确不显示页面的问题解决
  14. 对耦合电容、极间电容、旁路电容、去耦电容的理解小结
  15. Android8.0 USB系统框架
  16. 原华为区块链科学家黄连金先生受邀担任Hashgard基金会战略顾问
  17. Centos 7 安装 OpenResty api 网关 Orange
  18. 一个本科渣渣是怎么逆袭从咸鱼到Offer收割机的?大厂面经合集
  19. 【转】利用JMF进行多媒体编程
  20. 微信小程序之会议预约管理系统(含源码+论文+答辩PPT等)

热门文章

  1. I'm up to my ears
  2. 题目 1566: 贪吃的大嘴
  3. JavaScript的工作原理
  4. 2017年java笔试题_初级java程序员笔试题
  5. POJ3107Godfather找重心
  6. 大学冷知识「高校的学生也有专属昵称」
  7. Cocos Creator Effect 高斯模糊 (带算法)
  8. python3+scrapy+selenium爬取英雄联盟英雄资料
  9. gremlin 语法
  10. 协处理器CP15介绍—MCR/MRC指令(6)