正题

题目链接:https://www.luogu.com.cn/problem/P1251


题目大意

NNN天,第iii天需要aia_iai​个餐巾。

每个餐巾价格为ppp,使用完后有两种清洗方法

  1. 清洗mmm天,费用为fff
  2. 清洗nnn天,费用为sss

求满足所有需求的最小花费

1≤N≤2000,1≤ai≤107,1≤p,f,s≤1041\leq N\leq 2000,1\leq a_i\leq 10^7,1\leq p,f,s\leq 10^41≤N≤2000,1≤ai​≤107,1≤p,f,s≤104


解题思路

网络流242424题里的题目。而且显然是费用流

毛巾使用过后还可以再使用,我们有两种方法来限制这个条件

  1. 不使用最大流限制,那么我们每次使用毛巾可以视为流过一条流量为−inf-inf−inf的边,这样为了最小费用显然会满足所有条件。最后将流过的−inf-inf−inf的权值加回去就好了
  2. 使用最大流来限制。可以发现因为毛巾的条件是必须满足的,所以我们可以默认每次使用完后一定会剩下aia_iai​个毛巾,所以我们直接让流量表示毛巾,然后每次多产生回aia_iai​流量就好了

第二种好写一点,这里用的也是第二种


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define ll long long
using namespace std;
const ll N=4100,inf=1e18;
struct node{ll to,next,w,c;
}a[N<<4];
ll n,A,B,F,fa,fb,tot,ans,s,t;
ll ls[N],f[N],mf[N],pre[N],w[N];
bool v[N];queue<int> q;
void addl(ll x,ll y,ll w,ll c){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;a[tot].w=w;a[tot].c=c;a[++tot].to=x;a[tot].next=ls[y];ls[y]=tot;a[tot].w=0;a[tot].c=-c;return;
}
bool SPFA(){memset(f,0x3f,sizeof(f));f[s]=0;mf[s]=inf;q.push(s);v[s]=1;while(!q.empty()){ll x=q.front();q.pop();v[x]=0;for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;if(a[i].w&&f[x]+a[i].c<f[y]){f[y]=f[x]+a[i].c;pre[y]=i;mf[y]=min(mf[x],a[i].w);if(!v[y])v[y]=1,q.push(y);}}}return f[t]<inf;
}
void Updata(){ll x=t;ans+=mf[x]*f[x];while(x!=s){a[pre[x]].w-=mf[t];a[pre[x]^1].w+=mf[t];x=a[pre[x]^1].to;}return;
}
signed main()
{scanf("%lld",&n);s=2*n+1;t=s+1;tot=1;scanf("%lld%lld%lld%lld%lld",&A,&B,&F,&fa,&fb);for(ll i=1;i<=n;i++)scanf("%lld",&w[i]);for(ll i=1;i<=n;i++){addl(s,i,inf,F);addl(i,t,w[i],0);addl(s,i+n,w[i],0);if(i+A+1<=n)addl(i+n,i+A+1,inf,fa);if(i+B+1<=n)addl(i+n,i+B+1,inf,fb);if(i<n)addl(i,i+1,inf,0);}while(SPFA())Updata();printf("%lld\n",ans);return 0;
}

P1251-餐巾计划问题【费用流】相关推荐

  1. P1251 餐巾计划问题 费用流

    https://www.luogu.org/problemnew/show/P1251 题意 有一家酒店,酒店每天需要ri张桌布,桌布可以现买,p元.可以通过快洗店,等m天,f元.可以通过慢洗店,等n ...

  2. 洛谷P1251 餐巾计划问题 无汇源最小费用流

    题目描述 一个餐厅在相继的 NN 天里,每天需用的餐巾数不尽相同.假设第 ii 天需要 r_iri​块餐巾( i=1,2,...,N).餐厅可以购买新的餐巾,每块餐巾的费用为 pp 分;或者把旧餐巾送 ...

  3. 费用流 ---- P1251 餐巾计划问题[拆点](网络流24题)

    题目链接 题目大意: 解题思路 将脏餐巾以f元/条送到快洗部,过m天后,干净餐巾送回来使用 将脏餐巾以s元/条送到慢洗部,过n天后,干净餐巾送回来使用 延期送洗(可能会出现之后餐巾需求过少,并不需要所 ...

  4. 洛谷 - P1251 餐巾计划问题(最小费用最大流+思维建边)

    题目链接:点击查看 题目大意:给出n天每天所需要的新餐巾的数量,现在有多种方式可以获得新餐巾,问如何运营能使花费最少: 直接购买,花费为cost 将脏餐巾送到快洗部,需要洗t1天,花费为c1 将脏餐巾 ...

  5. jzoj4802-[GDOI2017模拟9.24]探险计划【费用流,拆点】

    正题 题目大意 一个nnn行的不完全矩阵第iii行有m+i−1m+i-1m+i−1个格子,然后每个格子有危险度. 每次可以从(i,j)(i,j)(i,j)走到(i−1,j)(i-1,j)(i−1,j) ...

  6. 【图论】【网络流】费用流模型

    费用流模型 费用流板子 费用流直接应用 运输问题 负载平衡问题 二分图最大匹配 分配问题 最大权不相交路径 数字梯形问题 费用流网格图模型 K取方格数 深海机器人问题 费用流拆点 餐巾计划问题 费用流 ...

  7. 餐巾计划问题 线性规划与网络流24题之10 费用流

    相关知识:最小费用(最大)流 问题描述: 一个餐厅在相继的N 天里, 每天需用的餐巾数不尽相同. 假设第i天需要ri块餐巾(i=1, 2,-,N).餐厅可以购买新的餐巾,每块餐巾的费用为p分:或者把旧 ...

  8. 初识费用流 模板(spfa+slf优化) 餐巾计划问题

    今天学习了最小费用最大流,是网络流算法之一.可以对于一个每条边有一个容量和一个费用(即每单位流的消耗)的图指定一个源点和汇点,求在从源点到汇点的流量最大的前提下的最小费用. 这里讲一种最基础也是最好掌 ...

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

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

最新文章

  1. 星辰变鸿蒙武器,星辰变手游亲手打造极品光武 成就炼器宗师
  2. 征集并发文献译者之Disruptor
  3. h.264语法结构分析
  4. SqlServerDBCC SHRINKFILE不起作用
  5. 在vivo面试 java_面试代码题(vivo)数位之积
  6. Linked List Cycle | ||
  7. [含论文+ppt+任务书+源码等]S2SH基于java的保险业务管理系统
  8. OMG,学它!java定时器quartz表达式
  9. python 修改证件照的尺寸
  10. 结构相似性(SSIM)原理及其实现
  11. 大白菜装机教程win10_大白菜U盘启动工具|大白菜超级U盘启动制作工具 V6.0_2009.25官方版下载...
  12. 狐妖小红娘的主题曲用计算机弹奏,1红娘曲谱_跪求狐妖小红娘新主题曲钢琴曲谱...
  13. C语言返回数组的两种方法
  14. c++按行读取txt
  15. 2019,无数人改变命运的绝佳之年!(深度)
  16. pyinstaller : 无法将“pyinstaller”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1
  17. OpenCV中值滤波器详解及代码实现
  18. V免签PHP二开版源码兼容所有易支付接口系统
  19. WRF模式安装(ubuntu)
  20. RecurDyn学习1

热门文章

  1. qtp服务器怎么获得日志信息,QTP自动化测试-打开运行报告
  2. python提供什么机制处理程序运行错误_浅谈Python异常处理机制
  3. 系统同传软件_如何戴耳机录制自己的同传练习?
  4. java 按钮设置图片_Java中如何设置带图片按钮的大小
  5. java 手机 上传图片_在手机端使用拍照功能上传图片的功能的解决文案
  6. c语言字符串倒置,单词倒置,用C++实现,将一句话里的单词进行倒置的方法详解
  7. python gui界面启动脚本、点击按钮执行脚本_如何使用PyQt在按钮单击上调用python脚本...
  8. php绘制饼图,php怎么绘制饼图?
  9. 算法题目——子序列和问题(poj-3061)(尺取法)
  10. 数据结构——图-最短路径长度中最大的一个