【bzoj2424】[HAOI2010]订货 费用流

时间:2022-09-03 09:22:09

原文地址:http://www.cnblogs.com/GXZlegend/p/6825296.html


题目描述

某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月初的库存量为零,第n月月底的库存量也为零,问如何安排这n个月订购计划,才能使成本最低?每月月初订购,订购后产品立即到货,进库并供应市场,于当月被售掉则不必付存贮费。假设仓库容量为S。

输入

第1行:n, m, S (0<=n<=50, 0<=m<=10, 0<=S<=10000)
第2行:U1 , U2 , ... , Ui , ... , Un (0<=Ui<=10000)
第3行:d1 , d2 , ..., di , ... , dn (0<=di<=100)

输出

只有1行,一个整数,代表最低成本

样例输入

3 1 1000
2 4 8
1 2 4

样例输出

34


题解

贪心 费用流

贪心细节太多了,还是费用流码起来快。

建图很简单:S->i,容量为inf,费用为di;i->t,容量为ui,费用为0;i->i+1,容量为S,费用为m。

这里需要注意的是当月购买的不需要存到仓库中。

#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
queue<int> q;
int head[60] , to[500] , val[500] , cost[500] , next[500] , cnt = 1 , s , t , dis[60] , from[60] , pre[60];
void add(int x , int y , int v , int c)
{
to[++cnt] = y , val[cnt] = v , cost[cnt] = c , next[cnt] = head[x] , head[x] = cnt;
to[++cnt] = x , val[cnt] = 0 , cost[cnt] = -c , next[cnt] = head[y] , head[y] = cnt;
}
bool spfa()
{
int x , i;
memset(from , -1 , sizeof(from));
memset(dis , 0x3f , sizeof(dis));
dis[s] = 0 , q.push(s);
while(!q.empty())
{
x = q.front() , q.pop();
for(i = head[x] ; i ; i = next[i])
if(val[i] && dis[to[i]] > dis[x] + cost[i])
dis[to[i]] = dis[x] + cost[i] , from[to[i]] = x , pre[to[i]] = i , q.push(to[i]);
}
return ~from[t];
}
int mincost()
{
int ans = 0 , i , k;
while(spfa())
{
k = 0x3f3f3f3f;
for(i = t ; i != s ; i = from[i]) k = min(k , val[pre[i]]);
ans += k * dis[t];
for(i = t ; i != s ; i = from[i]) val[pre[i]] -= k , val[pre[i] ^ 1] += k;
}
return ans;
}
int main()
{
int n , m , k , i , x;
scanf("%d%d%d" , &n , &m , &k) , s = 0 , t = n + 1;
for(i = 1 ; i <= n ; i ++ ) scanf("%d" , &x) , add(i , t , x , 0);
for(i = 1 ; i <= n ; i ++ ) scanf("%d" , &x) , add(s , i , 0x3f3f3f3f , x);
for(i = 1 ; i < n ; i ++ ) add(i , i + 1 , k , m);
printf("%d\n" , mincost());
return 0;
}

【bzoj2424】[HAOI2010]订货 费用流的更多相关文章

  1. BZOJ2424 &lbrack;HAOI2010&rsqb;订货 - 费用流

    题解 (非常裸的费用流 题意有一点表明不清: 该月卖出的商品可以不用算进仓库里面. 然后套上费用流模板 代码 #include<cstring> #include<queue> ...

  2. BZOJ 2424&colon; &lbrack;HAOI2010&rsqb;订货 费用流

    2424: [HAOI2010]订货 Description 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月 ...

  3. bzoj2424 &lbrack;HAOI2010&rsqb;订货 dp&plus;单调性

    [HAOI2010]订货 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1311  Solved: 884[Submit][Status][Discu ...

  4. BZOJ-2424&colon; &lbrack;HAOI2010&rsqb;订货【费用流】

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1487  Solved: 1002[Submit][Status][Discuss] Descript ...

  5. &lbrack;HAOI2010&rsqb;&lbrack;bzoj2424&rsqb; 订货 &lbrack;费用流&rsqb;

    题面 传送门 思路 这题其实挺水的......做过餐巾计划问题就能明白,是同一个道理 首先,显然刚刚好满足每一个月的需求,会得到最优解(废话-_-||) 然后我们发现,货物在不同的月之间的转移,可以比 ...

  6. bzoj2424 &lbrack;HAOI2010&rsqb;订货

    模拟一下仓库里面存储物品的价格情况即可,如果当前物品大于仓库里面物品那么就替换一下仓库里的物品,然后订货直接从仓库里先取,仓库里不够则直接购买,每次做完后记得买当前物品填补一下仓库直至仓库填满,当然这 ...

  7. 【BZOJ2424】&lbrack;HAOI2010&rsqb;订货(费用流)

    [BZOJ2424][HAOI2010]订货(费用流) 题面 BZOJ 洛谷 题解 傻逼费用流吧... 一开始理解错意思了,仓库大小为\(m\)的含义是留到下个月最多为\(m\),而不是任意时刻的容量 ...

  8. BZOJ 2424&colon; &lbrack;HAOI2010&rsqb;订货&lpar;最小费用最大流&rpar;

    最小费用最大流..乱搞即可 ------------------------------------------------------------------------------ #includ ...

  9. BZOJ&lowbar;2424&lowbar;&lbrack;HAOI2010&rsqb;订货&lowbar;最小费用最大流

    BZOJ_2424_[HAOI2010]订货_最小费用最大流 Description 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付 ...

随机推荐

  1. glibc 各版本发布时间以及内核默认glibc版本

    最近有些软件要求glibc 2.14+,centos 6.x自带的版本是2.12的,特查了下glibc 各版本发布时间以及与对应的内核,如下: Complete glibc release histo ...

  2. &lbrack;ASP&period;NET MVC 小牛之路&rsqb;02 - C&num;知识点提要

    本人博客已转移至:http://www.exblr.com/liam  本篇博文主要对asp.net mvc开发需要撑握的C#语言知识点进行简单回顾,尤其是C# 3.0才有的一些C#语言特性.对于正在 ...

  3. 与IE奋战的血泪史

    IE6下font-size会撑高元素,也就是说IE6下元素的最小高度为font-size的高度(蛋疼) IE6不支持两个class 例如 .a.b,类名不支持下划线开头 通过js设置样式带下划线的样式 ...

  4. linux 防火墙配置

    vi /etc/sysconfig/iptables # Generated by iptables-save v1. :: *nat :PREROUTING ACCEPT [:] :POSTROUT ...

  5. 配置文件后面的rc的由来

    配置文件后面的rc的由来 配置文件比较正规的叫法是:运行控制文件  run control Linux就这个范儿 4.5.3 配置文件 配置文件比较文绉绉的称呼是“运行控制文件”,存放与具体程序相关的 ...

  6. seaJS学习资料参考

    seajs官方文档:http://seajs.org/docs/#docs http://wenku.it168.com/d_000096482.shtml http://blog.codinglab ...

  7. 计算器显示e-005什么意思

    计算器显示e-005什么意思 1e-005是科学表达式,即 =1e-5 =0.00001e+005就是乘以10的5次方 就是-1.4989*10^5 这是科学计数法(也叫指数计数法)   这是科学计数 ...

  8. VM虚拟机下centos7 无法上网的问题解决办法

    博主本着学无止境的精神在虚拟机上安装了一个centos7 来敲敲命令行.刚开始就遇到了强大的阻力... ifconfig   vim  都没法用.这怎么行,安装呗.又学了圈安装,yum命令. 结果yu ...

  9. win7 服务详解-系统优化

    Adaptive Brightness监视氛围光传感器,以检测氛围光的变化并调节显示器的亮度.如果此服务停止或被禁用,显示器亮度将不根据照明条件进行调节.该服务的默认运行方式是手动,如果你没有使用触摸 ...

  10. 关于《平安iOS面试》小结

    面了下平安好医生iOS职位,结果不是很理想,也就是GG.写此文的目的在于,时刻提醒自己应该学到老,不要安于现状.也给那些以后去面试的coder一些"剧透"! 一.第一轮 妹子 面试 ...