题目

P1251 餐巾计划问题

思路

根据 标签 题意推断出是最小费用最大流问题,最主要的问题是如何构图才能形成网络流的模型
通过读题发现餐巾大致可分为两个部分,一个是新毛巾,要使用的(A类点);一个是旧毛巾,使用过了的(B类点),所以得到:

  • 旧毛巾Ai——(inf,f元/条)——>新毛巾Bi+m ( 快洗部 )
  • 旧毛巾Ai——(inf,s元/条)——>新毛巾Bi+n ( 慢洗部 )
  • 旧毛巾Ai——(inf,0元/条)——>旧毛巾Bi+1 ( 延期送洗 )

*流量为inf,但会受到时间限制
接下来就是源点和汇点之间的连接:

  • 每天的新毛巾——(每天需要毛巾数x,0元/条)——>汇点(当流量=x时,表示这一天需要的毛巾够数了)
  • 源点——(每天需要毛巾数x,0元/条)——>每天的旧毛巾
  • 源点——(购买的毛巾数y,p元/条)——>每天的新毛巾


对应的网络流:

代码

#include <bits/stdc++.h>
#define N 2*n+1
#define maxx 100000
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;struct node
{int to,next,w,c;
} e[maxx*3];
ll n,cnt=1,p,m,f,nn,s;
int head[maxx],flow[maxx],vis[maxx],last[maxx];
ll dis[maxx];void add(int from,int to,int w,int c)
{//+e[++cnt].to=to;e[cnt].w=w;e[cnt].c=c;e[cnt].next=head[from];head[from]=cnt;//-e[++cnt].to=from;e[cnt].w=0;e[cnt].c=-c;e[cnt].next=head[to];head[to]=cnt;
}bool spfa()
{queue<int> q;memset(dis,127,sizeof dis);//距离,最小花费memset(vis,0,sizeof vis);//是否标记过memset(last,-1,sizeof last);dis[0]=0;q.push(0);flow[0]=inf;while(!q.empty()){int x = q.front();q.pop();vis[x]=0;for(int i=head[x]; i; i=e[i].next){int to = e[i].to;int ww = e[i].w;if(ww>0 && e[i].c+dis[x]<dis[to]) //update{dis[to] = dis[x]+e[i].c; //min costflow[to] = min(flow[x],ww);//choose flowlast[to] = i;//记录上一条边,方便返回if(!vis[to]){q.push(to);vis[to]=1;}}}}return last[N] != -1;
}int main()
{cin>>n;int x;for(int i=1; i<=n; i++){cin>>x;add(0,i,x,0);//晚上从源点获得x条脏餐巾add(i+n,N,x,0);//白天向汇点提供x条干净餐巾,流满时表示第i天的餐巾够用}cin>>p>>m>>f>>nn>>s;for(int i=1; i<=n; i++){add(0,i+n,inf,p);if(i+1<=n)add(i,i+1,inf,0);if(i+m<=n)add(i,i+n+m,inf,f);if(i+nn<=n)add(i,i+n+nn,inf,s);}ll mincost=0;while(spfa()){mincost+=dis[N]*flow[N]; //every time,smallestfor(int i=N;i!=0;i=e[last[i]^1].to)//update{e[last[i]].w-=flow[N];e[last[i]^1].w+=flow[N];}}cout<<mincost<<endl;return 0;
}

注意

  1. 源点是0,汇点是N,不是之前的s和t

#网络流24# 餐巾计划问题相关推荐

  1. 【网络流24题】餐巾计划问题(最小费用最大流)

    [网络流24题]餐巾计划问题(最小费用最大流) 题面 COGS 洛谷上的数据范围更大,而且要开longlong 题解 餐巾的来源分为两种: ①新买的 ②旧的拿去洗 所以,两种情况分别建图 先考虑第一种 ...

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

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

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

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

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

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

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

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

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

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

  7. PowerOJ 1737 网络流24题之二 太空飞行计划问题(最大权闭合子图)

    PowerOJ 1737 网络流24题之二 太空飞行计划问题 原题地址: https://www.oj.swust.edu.cn/problem/show/1737 题意: W 教授正在为国家航天中心 ...

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

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

  9. 洛谷P4480 【[BJWC2018]餐巾计划问题】

    这道题和网络流 \(24\) 题中的餐巾计划的确不一样, \([\) \(BJWC\) \(2018\) \(]\) 餐巾计划问题的数据范围更大. 一个餐厅在相继的 \(n\) 天里,每天需用的餐巾数 ...

  10. 解题报告:线性规划与网络流24题

    目录 A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] B.太空飞行计划问题(最大权闭合图转最小割.最小割方案输出)[省选/NOI- ] C.最小路径覆盖问题(有向无环图最小路 ...

最新文章

  1. 机器视觉系统原理及学习策略
  2. linux安装google chrome
  3. Springboot整合swagger指南
  4. Oracle原理:11g的体系结构
  5. Android 自定义对话框
  6. Google C++ Coding Style:右值引用(Rvalue Reference)
  7. Head first servlet and jsp学习笔记
  8. 数据结构--队列、双端队列实际举例详解(Python代码)
  9. C语言:16进制字符串转int
  10. android 日历 课程设计,课程设计-数字日历的设计
  11. Hadoop权威指南学习笔记一
  12. BERT-BiLSTM-CRF命名实体识别应用
  13. java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory
  14. 运算放大器仿真 matlab,利用Matlab分析运算放大器电路.doc
  15. win10鼠标不受控制乱动_win10 控制面板在哪里?
  16. Java 添加、读取、删除PPT文档属性
  17. oracle查询挂起,表挂起更新查询Oracle 11g(Table hangs on Update query Oracle 11g)
  18. linux替换大文件内容,Linux批量替换文件内容
  19. Beyond Compare4过期使用方法
  20. Linux上安装和使用git到gitoschina和github上_亲测

热门文章

  1. 删库跑路?我劝你不要这样。
  2. 街篮中服务器维修什么时候能结束,街头篮球手游1月6日微信iOS维护公告 服务器扩容...
  3. 骇客学堂:网络入侵检测初步探测方法
  4. Chair:支付宝前端团队推出的Node.js Web框架
  5. 网络安全——kali_Linux基本命令大全
  6. linux文件与目录管理常用命令的分类【linux基础篇五】
  7. 网卡基本配置2(主机名修改、网卡绑定)
  8. GoogleStyle编程代码规范
  9. 购物商城网站建设费用到底贵不贵?
  10. 快手、抖音等短视频营销模式