题目链接:传送门

时间有点赶,所以写的简略一些了.

dalao:这道题不是看看就出来了吗?
me:这道题十分难想啊!!!!图好难建啊!!!!但是想到以后就是一个裸题啊!!

要拆点,将每天拆为早上和晚上(干净的和脏的).
如果不会拆点的话,你可以立即去世了,写网络流的题怎么能不会拆点呢?这是学网络流必备的啊

  • 建立源点汇点.(废话,那个网络流的题不要建)
  • 源点向每天晚上连一条边,流量为当天所需的纸巾数,费用为0。
  • 汇点向每天早上连一条边,流量为当天所需的纸巾数,费用为0。
  • 每天晚上向明天晚上连一条边,流量为inf,费用为0(将当天的脏纸巾留到明天).
  • 连快洗店,慢洗店的边.从当天晚上向过x天(洗纸巾的天数)后那一天早上连一条边,流量为inf,费用为洗纸巾的费用.
  • 连买新纸巾的边,从源点向每天早连一条边,流量为inf,费用为买新纸巾所需费用。

理由呢......自己对着这个看看吧,应该可以明白的.

注意判边界啊

注意开long long 啊

#include<bits/stdc++.h>
#define int long long
const int inf=1e15;
using namespace std;
typedef long long ll;
int read() {int x=0,f=1;char c=getchar();while(c<'0'||c>'9')f=(c=='-')?-1:1,c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return x*f;
}
struct node {int to,next,v,w;
} a[1000001];
int dis[10001],f[10001],pre[10001],fa[10001],s,t,n,m,head[10001],cnt,x,y,z,c;
void add(int x,int y,int c,int v) {a[++cnt].to=y;a[cnt].next=head[x];a[cnt].v=c;a[cnt].w=v;head[x]=cnt;
}
queue < int > q;
int spfa() {q.push(s);memset(dis,127,sizeof(dis));memset(f,0,sizeof(f));f[s]=1,dis[s]=0;int inf1=dis[s+1];while(!q.empty()) {int now=q.front();q.pop();f[now]=0;for(int i=head[now]; i; i=a[i].next) {int v=a[i].to;if(dis[v]>dis[now]+a[i].w&&a[i].v) {dis[v]=dis[now]+a[i].w,pre[v]=i,fa[v]=now;if(!f[v])f[v]=1,q.push(v);}}}if(dis[t]!=inf1)return 1;return 0;
}
int ans1,ans;
void anser() {while(spfa()) {int minx=inf;for(int i=t; i!=s; i=fa[i])minx=min(minx,a[pre[i]].v);ans+=minx,ans1+=dis[t]*minx;for(int i=t; i!=s; i=fa[i])a[pre[i]].v-=minx,(pre[i]%2)?a[pre[i]+1].v+=minx:a[pre[i]-1].v+=minx;}
}
int a1[20001];
main() {n=read();int p,m,f,nn,ss,pp;ss=0,t=n*2+1;for(int i=1; i<=n; i++)a1[i]=read();for(int i=1; i<=n; i++)add(s,i,a1[i],0),add(i,s,0,0);for(int i=1; i<=n; i++)add(i+n,t,a1[i],0),add(t,i+n,0,0);p=read(),m=read(),f=read(),nn=read(),ss=read();for(int i=1; i<=n; i++)if(i+n+1<t)add(i+n,i+n+1,inf,0),add(i+n+1,i+n,0,0); for(int i=1; i<=n; i++)if(i+m+n<t)add(i,i+n+m,inf,f),add(i+n+m,i,0,-f);for(int i=1; i<=n; i++)if(i+nn+n<t)add(i,i+nn+n,inf,ss),add(i+nn+n,i,0,-ss);for(int i=1; i<=n; i++)add(s,i+n,1000000,p),add(i+n,s,0,-p);anser();printf("%lld",ans1);
}

转载于:https://www.cnblogs.com/hbxblog/p/9733584.html

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

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

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

  2. [网络流24题][CODEVS1237]餐巾计划问题(费用流)

    题目描述 传送门 题解 拆点,把每天的点拆成xi和yi,xi表示每一天的脏毛巾,yi表示每一天的新毛巾. 从超级源向xi连边,容量为ri,费用为0: 从yi向超级汇连边,容量为ri,费用为0: 从超级 ...

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

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

  4. 【hjmmm网络流24题补全计划】

    本文食用方式 按ABC--分层叙述思路 可以看完一步有思路后自行思考 飞行员配对问题 题目链接 这可能是24题里最水的一道吧... 很显然分成两个集合 左外籍飞行员 右皇家飞行员 跑二分图最大匹配 输 ...

  5. 【网络流24题补全计划】

    本文食用方式 按ABC--分层叙述思路 可以看完一步有思路后自行思考 飞行员配对问题 题目链接 这可能是24题里最水的一道吧... 很显然分成两个集合 左外籍飞行员 右皇家飞行员 跑二分图最大匹配 输 ...

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

    分析 最大权闭合子图模板题 把实验获得的收益看成正权点,仪器费用看成负权点,每个实验向所需要的仪器连边 跑最大权闭合子图即可 详见https://www.cnblogs.com/birchtree/p ...

  7. 网络流24题-太空飞行计划

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

  8. 线性规划与网络流24题 太空飞行计划问题 (最小割及输出方案)

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

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

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

最新文章

  1. cannot access a closed file
  2. Spring - @CompentScan全解
  3. 的setinterval函数_Vue定时器与JS 定时器 setInterval() 和 setTimeout()
  4. ORACLE的ProC用法讲解
  5. 车速与档位匹配关系_档位与速度匹配法则 每个档位的速度范围
  6. IAR 下根据官方库建立 STM32的工程
  7. Python基础语法和数据类型最全总结
  8. linux静态反汇编工具,源码恢复反汇编静态分析工具IDA pro
  9. 设计模式 经典书籍必备推荐
  10. 三角形内部线性插值方法
  11. 计算机应用基础问答题,计算机应用基础问答题
  12. Cocos Creator 获取当前URL取参数
  13. Kafka ACL使用实战
  14. 最新最全物联网行业报告: IOT时代已经到来
  15. 817考研c语言程序设计,2017年沈阳航空航天大学计算机学院817程序设计[专业硕士]考研题库...
  16. 诗歌十一 十二则名门家训(非淡泊无以明志,非宁静无以致远)
  17. 4K、2K、1080p、720p、480p、240p常见视频清晰度
  18. ios测试硬盘速度软件,MAC测试“读写速度达100MB/s_希捷 Backup Plus Slim for Mac 500GB_移动存储评测-中关村在线...
  19. JDBC问题: Unknown error 1146 Query
  20. python bluetooth蓝牙信息获取蓝牙设备类型

热门文章

  1. C#中timer类的用法
  2. bash-shell高级编程--求最大公约数
  3. find命令查找某些文件并将其拷贝到指定目录
  4. C语言再学习 -- 常用头文件和函数(转)
  5. 【译】Introduction to Byteball — Part 1: Why?
  6. Linux kernel 3.10内核源码分析--TLB相关--TLB概念、flush、TLB lazy模式
  7. Mach-O的动态链接相关知识
  8. 51Nod 斜率最大
  9. JZOJ 5398. 【NOIP2017提高A组模拟10.7】Adore
  10. 参考平面及其高度_GCB | 盐沼和红树林湿地类型的转变会改变亚热带湿地对于海平面上升的脆弱性么?...