BZOJ 2424: [HAOI2010]订货
2424: [HAOI2010]订货
Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 915  Solved: 639
[Submit][Status][Discuss]
Description
Input
Output
只有1行,一个整数,代表最低成本
Sample Input
2 4 8
1 2 4
Sample Output
HINT
Source
动态规划。
一开始看到题面的时候以为是那道经典的贪心问题,就是维护当前最优单价,不断转移。
然而这道题限制了仓库的容量,使得最优单价不能直接向后转移,所以需要动态规划。
设$f[i][j]$表示经过了第$i$个月(此时已经到了月底),仓库中剩余量为$j$的当前最小费用。
转移如下:
$f[i][j+1]=min(f[i][j+1],f[i][j]+D_{i})$ 表示可以在本月额外购进一单位作为储存。
当$j \geq U_{i+1}$, $f[i+1][j-U_{i+1}]=min(f[i+1][j-U_{i+1}],f[i][j]+M*j$ 表示如果当前储备够下个月出售,下个月可以不购进商品,只需支付两个月之间的储存费用。
当$j \lt U_{i+1}$, $f[i+1][0]=min(f[i+1][0],f[i][j]+M*j+(U_{i+1}-j)*D_{i+1}$ 表示如果当前储备不够下个月,下个月除了需要支付储存费用,还需要额外购进一些商品。
#include <cstdio> inline int nextChar(void)
{
const static int siz = ; static char buf[siz];
static char *hd = buf + siz;
static char *tl = buf + siz; if (hd == tl)
fread(hd = buf, , siz, stdin); return *hd++;
} inline int nextInt(void)
{
register int ret = ;
register int neg = false;
register int bit = nextChar(); for (; bit < ; bit = nextChar())
if (bit == '-')neg ^= true; for (; bit > ; bit = nextChar())
ret = ret * + bit - ; return neg ? -ret : ret;
} const int inf = 1e9;
const int maxn = ;
const int maxm = ; int N, M, S;
int U[maxn];
int D[maxn]; int f[maxn][maxm]; inline void Min(int &a, const int &b)
{
if (a > b)a = b;
} signed main(void)
{
N = nextInt();
M = nextInt();
S = nextInt(); for (int i = ; i <= N; ++i)
U[i] = nextInt(); for (int i = ; i <= N; ++i)
D[i] = nextInt(); for (int i = ; i <= N; ++i)
for (int j = ; j <= S; ++j)
f[i][j] = inf; f[][] = D[] * U[]; for (int i = ; i <= N; ++i)
for (int j = ; j <= S; ++j)
if (f[i][j] < inf)
{
Min(f[i][j + ], f[i][j] + D[i]);
if (j >= U[i + ])
Min(f[i + ][j - U[i + ]], f[i][j] + j * M);
else
Min(f[i + ][], f[i][j] + (U[i + ] - j) * D[i + ] + j * M);
} int ans = inf; for (int i = ; i <= S; ++i)
Min(ans, f[N][i]); printf("%d\n", ans);
}
突然,机房小伙伴们惊奇地看我:“这特么不是裸的费用流吗?”
WOC,我是有多蠢,去想DP?LTY神犇要来HACK我了,好怕怕~~~
补上最小费用流代码……
#include <cstdio>
#include <cstring> inline char nextChar(void)
{
static const int siz = ; static char buf[siz];
static char *hd = buf + siz;
static char *tl = buf + siz; if (hd == tl)
fread(hd = buf, , siz, stdin); return *hd++;
} inline int nextInt(void)
{
register int ret = ;
register int neg = false;
register int bit = nextChar(); for (; bit < ; bit = nextChar())
if (bit == '-')neg ^= true; for (; bit > ; bit = nextChar())
ret = ret * + bit - ; return neg ? -ret : ret;
} const int siz = ;
const int inf = ; int tot;
int s, t;
int hd[siz];
int to[siz];
int fl[siz];
int vl[siz];
int nt[siz]; inline void add(int u, int v, int f, int w)
{
nt[tot] = hd[u]; to[tot] = v; fl[tot] = f; vl[tot] = +w; hd[u] = tot++;
nt[tot] = hd[v]; to[tot] = u; fl[tot] = ; vl[tot] = -w; hd[v] = tot++;
} int dis[siz];
int pre[siz]; inline bool spfa(void)
{
static int que[siz];
static int inq[siz];
static int head, tail; memset(dis, 0x3f, sizeof(dis));
memset(inq, , sizeof(inq));
head = , tail = ;
que[tail++] = s;
pre[s] = -;
dis[s] = ;
inq[s] = ; while (head != tail)
{
int u = que[head++], v; inq[u] = ; for (int i = hd[u]; ~i; i = nt[i])
if (dis[v = to[i]] > dis[u] + vl[i] && fl[i])
{
dis[v] = dis[u] + vl[i], pre[v] = i ^ ;
if (!inq[v])inq[que[tail++] = v] = ;
}
} return dis[t] < 0x3f3f3f3f;
} inline int minCost(void)
{
int cost = , flow; while (spfa())
{
flow = inf; for (int i = pre[t]; ~i; i = pre[to[i]])
if (flow > fl[i ^ ])flow = fl[i ^ ]; for (int i = pre[t]; ~i; i = pre[to[i]])
fl[i] += flow, fl[i ^ ] -= flow; cost += dis[t] * flow;
} return cost;
} int n, m, k; signed main(void)
{
n = nextInt();
m = nextInt();
k = nextInt(); s = , t = n + ; memset(hd, -, sizeof(hd)); for (int i = ; i <= n; ++i)
add(i, t, nextInt(), ); for (int i = ; i <= n; ++i)
add(s, i, inf, nextInt()); for (int i = ; i < n; ++i)
add(i, i + , k, m); printf("%d\n", minCost());
}
@Author: YouSiki
BZOJ 2424: [HAOI2010]订货的更多相关文章
- BZOJ 2424: [HAOI2010]订货 费用流
		
2424: [HAOI2010]订货 Description 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月 ...
 - BZOJ 2424: [HAOI2010]订货(最小费用最大流)
		
最小费用最大流..乱搞即可 ------------------------------------------------------------------------------ #includ ...
 - BZOJ 2424: [HAOI2010]订货(费用流)
		
裸的费用流了= =从源点向每个点连费用为di,从汇点向每个点连流量为ui,每个点向下一个点连费用为m,流量为s的边就行了 CODE: #include<cstdio>#include< ...
 - bzoj 2424: [HAOI2010]订货 (费用流)
		
直接费用流,天数就是点数 type arr=record toward,next,cap,cost:longint; end; const maxm=; maxn=; mm=<<; var ...
 - 2424: [HAOI2010]订货
		
2424: [HAOI2010]订货 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 922 Solved: 642[Submit][Status][ ...
 - 2424. [HAOI2010]订货【费用流】
		
Description 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月初的库存量为零,第n月月底的库存量也为 ...
 - 【BZOJ2424】[HAOI2010]订货(费用流)
		
[BZOJ2424][HAOI2010]订货(费用流) 题面 BZOJ 洛谷 题解 傻逼费用流吧... 一开始理解错意思了,仓库大小为\(m\)的含义是留到下个月最多为\(m\),而不是任意时刻的容量 ...
 - 【BZOJ2424】[HAOI2010]订货 最小费用流
		
[BZOJ2424][HAOI2010]订货 Description 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定 ...
 - bzoj2424 [HAOI2010]订货  dp+单调性
		
[HAOI2010]订货 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1311 Solved: 884[Submit][Status][Discu ...
 
随机推荐
- Office 365使用情况调查不完全分析报告
			
感谢大家参与了9月13日在Office 365技术群(O萌)中发起的一个关于Office 365使用情况的调查,在一天左右的时间内,我们一共收到了67份反馈,其中绝大部分是在3分钟内提交的. 本次调查 ...
 - Android开发aidl使用中linkToDeath和unlinkToDeath的使用
			
1.Binder死亡代理 这一节首先将介绍Binder类中比较重要的两个方法linkToDeath和unlinkToDeath.我们知道Binder是运行在服务进程,若服务端进程因为某种原因“ ...
 - centos 6 YUM安装 lmp
			
准备篇: 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m t ...
 - sublime 相关配置
			
安转插件:案例格式化HTML代码,需要安装插件,具体安装步骤如下: 1.打开菜单->首选项->插件控制,输入 install package 2.等待程序进入插件管理功能,再输入插件名称: ...
 - Atitit.css 规范 bem  项目中 CSS 的组织和管理
			
Atitit.css 规范 bem 项目中 CSS 的组织和管理 1. 什么是BEM?1 1.1. 块(Block)2 1.2. 元素(Element)2 1.3. BEM树(和DOM树类似).3 ...
 - 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
			
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
 - [Hadoop in Action] 第2章 初识Hadoop
			
Hadoop的结构组成 安装Hadoop及其3种工作模式:单机.伪分布和全分布 用于监控Hadoop安装的Web工具 1.Hadoop的构造模块 (1)NameNode(名字节点) ...
 - mssqlserver数据导出到另外一个数据库
			
mssqlserver数据导出到另外一个数据库 准备源数据库,找到想要导出的数据库,右键选择"任务"再选择"导出数据" 设置源数据库信息 3.设置目标数据库,导 ...
 - CentOS中的环境变量配置文件
			
CentOS的环境变量配置文件体系是一个层级体系,这与其他多用户应用系统配置文件是类似的,有全局的,有用户的,有shell的,另外不同层级有时类似继承关系.下面以PATH变量为例. 1.修改/etc/ ...
 - x01.TodoList:Asp.Net 5 初探
			
ASP.NET 5 是比较新的,除了汤姆的博文,学习资料并不多.而学习没有例子上手,是比较痛苦的. 1.运行 vs2015,新建项目,选择 Asp.Net 5 WebApp 模板,默认运行即可.对照汤 ...