传送门

裸题,当水博客用的)

由源点向每个月连容量为 i n f inf inf,费用为订货单价的边,表示每月的订购产品。

每个月向汇点连容量为当月需求量,费用为 0 0 0 的边,表示当月卖出。

同时,每个月向下个月连容量为仓库容量,费用为储藏费用的边。

跑最小费用最大流即可。

紫题能不能都这么简单啊


参考代码

#include <bits/stdc++.h>
#define itn int
#define int long long
#define endl "\n"
#define PII pair<int, int>
using namespace std;
const int N = 1e5 + 10;
const int M = 5e4 + 10;
const itn inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;
// const int mod = 998244353;template <int N>
struct MCMF {struct E {int to, cap, val, inv;};vector<E> g[N];int dis[N], now[N], h[N], pre[N], preu[N];void add(int u, int v, int f, int w) {g[u].push_back({v, f, w, (int)g[v].size()});g[v].push_back({u, 0, -w, (int)g[u].size() - 1});}void dijkstra(int st) {priority_queue<pair<int, int>, vector<pair<int, int>>,greater<pair<int, int>>>q;memset(dis, 0x3f, sizeof dis);memset(pre, -1, sizeof pre);memset(preu, -1, sizeof preu);dis[st] = 0;q.push({0, st});while (q.size()) {// auto [d, u] = q.top();auto qnow = q.top();int d = qnow.first, u = qnow.second;q.pop();if (dis[u] < d)continue;int x = 0;for (auto gnow : g[u]) {int v = gnow.to, f = gnow.cap, w = gnow.val, inv = gnow.inv;if (f && dis[v] > dis[u] + w + h[u] - h[v]) {dis[v] = dis[u] + h[u] - h[v] + w;pre[v] = x;preu[v] = u;q.push({dis[v], v});}x++;}}}pair<int, int> min_cost_max_flow(int st, int ed) {memset(h, 0, sizeof h);for (int flow = 0, cost = 0, res = inf;; res = inf) {dijkstra(st);if (dis[ed] > inf)return {flow, cost};for (int i = 0; i < N; i++) {h[i] += dis[i];}for (int i = ed; i != st; i = preu[i]) {res = min(res, g[preu[i]][pre[i]].cap);}flow += res;cost += res * h[ed];for (int i = ed; i != st; i = preu[i]) {g[i][g[preu[i]][pre[i]].inv].cap += res;g[preu[i]][pre[i]].cap -= res;}}}
};
MCMF<300> mcmf;int n, m, q, s, t;
void solve() {int x;s = 0, t = 55;cin >> n >> m >> q;for (int i = 1; i <= n; i++) {cin >> x;mcmf.add(i, t, x, 0);}for (int i = 1; i <= n; i++) {cin >> x;mcmf.add(s, i, inf, x);}for (int i = 1; i < n; i++)mcmf.add(i, i + 1, q, m);cout << mcmf.min_cost_max_flow(s, t).second << endl;
}signed main() {ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);cout << fixed << setprecision(12);// init();int T = 1;// cin >> T;while (T--) {solve();}return 0;
}

P2517 [HAOI2010]订货 (最小费用最大流)相关推荐

  1. 乌鲁木齐网络赛J题(最小费用最大流模板)

    ACM ICPC 乌鲁木齐网络赛 J. Our Journey of Dalian Ends 2017-09-09 17:24 243人阅读 评论(0) 收藏 举报  分类: 网络流(33)  版权声 ...

  2. POJ - 2516 Minimum Cost 最小费用最大流

    题目链接 题意:给n,m,k表示商店数,储存店数,种类数 然后给n*k表示每个水果店需求每种种类的数量: 表示成 need[i][j] 再给m*k表示每个储存店每种种类数量: 表示成store[i][ ...

  3. pku The Windy's KM最小权匹配 or 最小费用最大流

    http://poj.org/problem?id=3686 题意: 给定n个玩具,有m个车间,给出每个玩具在每个车间的加工所需的时间mat[i][j]表示第i个玩具在第j个车间加工所需的时间,规顶只 ...

  4. c语言最小费用流_策略算法工程师之路-图优化算法(一)(二分图amp;最小费用最大流)...

    目录 1.图的基本定义 2.双边匹配问题 2.1 二分图基本概念 2.2 二分图最大匹配求解 2.3 二分图最优匹配求解 2.4 二分图最优匹配建模实例 2.4.1 二分图最优匹配在师生匹配中的应用 ...

  5. 有源汇上下界最小费用可行流 ---- P4553 80人环游世界(拆点 + 有源汇上下界最小费用可行流)

    题目链接 题目大意: 解题思路: 又是一道裸题 . 首先它要求第iii个点只经过ViViVi那么我们就拆点ai,ai+na_i,a_{i+n}ai​,ai+n​一个点为入点,一个为出点这条边的流量范围 ...

  6. 有源汇上下界最小费用可行流 ---- P4043 [AHOI2014/JSOI2014]支线剧情(模板)

    题目链接 题目大意: 解题思路: 有源汇上下界最小费用可行流模板题目来着 先建出一个有源汇上下界可行流的图,然后注意建图的时候要把每条边的下界的费用提前加到ans里面 然后再对图跑费用流,就是补齐费用 ...

  7. Doctor NiGONiGO’s multi-core CPU(最小费用最大流模板)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=693 题意:有一个 k 核的处理器和 n 个工作,全部的工作都须要在一个核上处理一个单位的 ...

  8. 【最小费用最大流】Going Home

    概念: 在同一个网络中,可能存在多个总流量相同的最大流,我们可以在计算流量的基础之上,给网络中的弧增加一个单位流量的费用(简称费用),在确保流量最大的前提下总费用最小--最小费用最大流. C - Go ...

  9. 最大流最小费用java_最小费用最大流及算法

    最大流的网络,可看作为辅送一般货物的运输网络,此时,最大流问题仅表明运输网络运输货物的能力,但没有考虑运送货物的费用.在实际问题中,运送同样数量货物的运输方案可能有多个,因此从中找一个输出费用最小的的 ...

最新文章

  1. 如何导入nod32企业版的授权文件.lic,并制作镜像服务器?
  2. android ffmpeg 简书,偶遇FFmpeg(三)——Android集成
  3. Python 技术篇-socket套接字实现服务器客户端消息传递实例演示,UDP实现
  4. 写一个实时监控IP连通性的小脚本
  5. SAP标准工单入库时产生成本差异-求解进行时
  6. Linux命令:和输出
  7. MATLAB保存数据为dat格式,將matlab中數據保存為txt或dat格式
  8. .NET下安装卸载WindowsService批处理脚本
  9. python内存池机制_看过来啦!教你用Python进行内存管理
  10. 聊聊2019年的web前端
  11. win7旗舰版+caffe+vs2013+matlab2014b(无GPU版)
  12. 功能至上!国内外最实用的协作类软件盘点
  13. Voxengo音频插件合集:Voxengo Total Bundle for Mac
  14. 5.被动回复用户消息
  15. linux系统怎么使用优盘,教你如何使用u盘安装Linux系统
  16. conda安装编译好了的caffe, ImportError: cannot import name ‘_validate_lengths‘
  17. dms虚拟服务器,iOS UPNP之DMS具体操作,让手机成为DMS服务器
  18. python 判断两个列表间是否具有包含关系以及获取子列表在父列表中的索引
  19. 服务器 战地4 无限载入,战地4卡在loading界面无限载入的解决方法_快吧单机游戏...
  20. krpano限制场景视角

热门文章

  1. 互联网公司招聘--华为--校园招聘程序员--2017年笔试题
  2. SPI_OLED模块操作方法
  3. OLED显示模块的电路连接和驱动(树莓派)
  4. vin识别(车架号)解析
  5. CNN卷积神经网络结构及参数配置
  6. 熠智科技CTO汤载阳:筑牢隐私计算基础底座,打通数据要素流通的任督二脉 | 数据猿专访...
  7. evince无法返回上次浏览的位置
  8. 猜拳游戏(三局两胜)
  9. 【WCF】什么是WCF
  10. APC PDU升级固件流程