题意

给出一些实验和器材,每种实验需要一些器材,每种实验如果做了可以获取一定的收益但是要支付实验器材相应的代价。器材如果买过了就不用再买了。现在给出一些实验和器材的收益和价值,求出我们最多能获得多少收益和做了的实验和用了的器材。

思路

收益:先存下实验的一共得收益。我们对一个实验有两种选择:做这个实验,支付器材相应的价值;不做这个实验,减去这个实验可以获得的收益。这样子就变成了求一个图的最小割问题,把实验和源点连一条边,容量为实验的收益,把器材和汇点连一条边,容量为器材代价,实验和器材之间要连一条容量无穷大的边,所以我们不会割这条边。
求做了的实验和器材:在dinic算法中我们会构建分层图,判断实验和器材的深度我们就可以知道有没有做过哪些实验和器材了。

代码

#include<cstdio>
#include<queue>
using namespace std;
int tot,m,n,ans,head[1030],d[1030],f[1030],num,val,S,T,ff;
char c;
struct node{int to,flow,next;
}e[26010];
void add(int x,int y,int flow)
{e[++tot].to=y;e[tot].flow=flow;e[tot].next=head[x];head[x]=tot;e[++tot].to=x;e[tot].flow=0;e[tot].next=head[y];head[y]=tot;
}
bool bfs()
{queue<int> q;int x,y;for (int i=1;i<=T;i++) d[i]=0;q.push(S);d[S]=1;while (q.size()){x=q.front();q.pop();for (int i=head[x];i;i=e[i].next){y=e[i].to;if (e[i].flow&&!d[y]){d[y]=d[x]+1;q.push(y);if (y==T) return 1;}}}return 0;
}
int dfs(int k,int flow)
{if (k==T) return flow;int rest=0,w,y;//rest一定要清0 for (int i=head[k];i;i=e[i].next){y=e[i].to;if (e[i].flow&&d[y]==d[k]+1){w=dfs(y,min(flow-rest,e[i].flow));if (!w) d[y]=0;e[i].flow-=w;e[i^1].flow+=w;rest+=w;}}return rest;
}
int main()
{scanf("%d%d",&m,&n);tot=1;S=0;T=m+n+1;for (int i=1;i<=m;i++){scanf("%d",&f[i]);ans+=f[i];add(S,i,f[i]);scanf("%c",&c);num=0;while ((scanf("%c",&c)),c!='\n'){if (c>='0'&&c<='9') num=num*10+c-48;else add(i,num+m,2147483647),num=0;}add(i,num+m,2147483647);}for (int i=1;i<=n;i++){scanf("%d",&val);add(i+m,T,val);}while (bfs())while (ff=dfs(S,2147483647)) ans-=ff;//最大收益for (int i=1;i<=m;i++)if (d[i]) printf("%d ",i);//求做了的实验printf("\n");for (int i=m+1;i<=n+m;i++)if (d[i]) printf("%d ",i-m);//求用过了的器材printf("\n");printf("%d",ans);
}

洛谷_2762 太空飞行计划问题相关推荐

  1. 洛谷 P2762 太空飞行计划问题

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

  2. 洛谷 P2762 太空飞行计划问题(自己理解的口胡版)

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

  3. 洛谷 - P2762 太空飞行计划问题(最大权闭合图+路径打印)

    题目链接:点击查看 题目大意:给出n个实验,每个实验完成之后都可以得到一定的奖金,但每个实验需要特殊的器械才可以完成,准备器械又需要一定的支出,现在问如何选择实验才能让利润最大化,并输出需要选择的实验 ...

  4. 洛谷2762 太空飞行计划问题

    传送门 题目大意 给定n个实验,m种器材,每个实验都需要使用一些器材.进行某个实验会获得该实验的经费,但是如果没有该实验所需要的仪器,就需要花费一些钱来购买.求选择哪些实验所获得的收益最大. 解题思路 ...

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

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

  6. 【网络流24题】B、太空飞行计划问题(最大权闭合图转最小割、最小割方案输出)

    整理的算法模板合集: ACM模板 B.太空飞行计划问题(最大权闭合图转最小割.最小割方案输出)[省选/NOI- ] P2762 太空飞行计划问题 [问题分析] 最大权闭合图问题,可以转化成最小割问题, ...

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

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

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

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

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

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

最新文章

  1. Bazel入门教程:编译C++项目
  2. Grails GORM查询总结
  3. ATT扩展随选网络至100城 SDN在美国落地开花
  4. android sdk eclipse没导入,Android—新的eclipse导入SDK出错解决办法
  5. 阿里云高级技术专家带你全面了解云主机性能评测
  6. 描述一下JAVA的加载过程_JVM源码分析之Java类的加载过程
  7. 某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1。使用非递归的算法求解满足要求的n值的程序。
  8. java期末判断题题库_(java期末考试选择题题库.doc
  9. 译文丨伯克利对serverless的看法:简化云编程
  10. 怎么看vray渲染进度_3dmax如何渲染光子,为什么会卡光子呢?
  11. 1929. 数组串联
  12. css模拟title和alt的提示效果[转]
  13. VBoxGuestAdditions.iso无法在virtualbox中正确安装
  14. 软考初级程序员---题目(四)
  15. Canvas 仿百度贴吧客户端 loading 小球
  16. dwcc怎么设置html默认,Dreamweaver CC 2019如何设置界面首选项?
  17. 网络空间安全——2021软科中国大学专业排名
  18. 【收藏】林达华 概率模型与计算机视觉
  19. 第一次参加pub的地面聚会
  20. 商用清洁机器人:科沃斯“破圈”、高仙机器人“纵深”

热门文章

  1. 超乎想象!关于5G无人机的最强科普!
  2. 《孙子兵法》国学智慧
  3. 裁员潮此起彼伏,转行数据分析师仍旧可期
  4. 【本人秃顶程序员】技术面试与HR谈薪资的时候有哪些技巧
  5. (转载)机器学习方法的PPT
  6. TimeGen 软件的实用
  7. 【论文翻译 - RFID】射频全息图:利用商业化产品对移动射频标签进行实时高精度追踪
  8. 专攻国内实体瘤CAR-T细胞疗法,南京卡提医学获数千万元A轮融资
  9. 求助!spyder beautifulsoup4显示错误:AttributeError: 'HTMLParserTreeBuilder' object has no attribute 'initia
  10. 关于接入达达开发者文档的一些问题