Description

题库链接

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

\(1\leq n\leq 50,1\leq S\leq 10000\)

Solution

记第 \(i\) 天后,仓库容量为 \(j\) 的最小成本为 \(f_{i,j}\) ,容易得到

\[f_{i,j}=\min_{0\leq k\leq \min\{S, j+U_i\}}\{f_{i-1,k}+(j+U_i-k)d_i+jm\}\]

这样是 \(O(nS^2)\) 的,不过这个式子可以前缀和优化到 \(O(nS)\) 。

Code

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 55, S = 10000+5; int n, m, s, u[N], d[N];
ll f[N][S], minn[N][S]; void work() {
scanf("%d%d%d", &n, &m, &s);
for (int i = 1; i <= n; i++) scanf("%d", &u[i]);
for (int i = 1; i <= n; i++) scanf("%d", &d[i]);
memset(f, 127/3, sizeof(f)); f[0][0] = 0;
memset(minn, 127/3, sizeof(minn));
for (int i = 1; i <= n; i++) {
for (int j = 0; j <= s; j++)
minn[i][j] = min(minn[i][j-1], f[i-1][j]-1ll*j*d[i]);
for (int j = 0; j <= s; j++)
f[i][j] = minn[i][min(s, j+u[i])]+1ll*j*(d[i]+m)+1ll*u[i]*d[i];
}
printf("%lld\n", f[n][0]);
}
int main() {work(); return 0; }

[HAOI 2010]订货的更多相关文章

  1. [HAOI 2010]软件安装

    Description 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和 ...

  2. [HAOI 2010] 计数

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2425 [算法] 类似与数位动态规划的思想 , 用组合数学进行简单推导即可 时间复杂度 ...

  3. [ HAOI 2010 ] 最长公共子序列

    \(\\\) \(Description\) 求两个长度\(\le5000\)的大写字母串的\(LCS\)长度及个数,定义两\(LCS\)中某一字符在两序列出现位置有一处不同就视为不同. \(\\\) ...

  4. BZOJ 2427 /HAOI 2010 软件安装 tarjan缩点+树形DP

    终于是道中文题了.... 当时考试的时候就考的这道题.... 果断GG. 思路: 因为有可能存在依赖环,所以呢 先要tarjan一遍 来缩点. 随后就进行一遍树形DP就好了.. x表示当前的节点.j表 ...

  5. 如何使用本地账户"完整"安装 SharePoint Server 2010+解决“New-SPConfigurationDatabase : 无法连接到 SharePoint_Config 的 SQL Server 的数据 库 master。此数据库可能不存在,或当前用户没有连接权限。”

    注:目前看到的解决本地账户完整安装SharePoint Server 2010的解决方案如下,但是,有但是的哦: 当我们选择了"完整"模式安装SharePointServer201 ...

  6. How to accept Track changes in Microsoft Word 2010?

    "Track changes" is wonderful and remarkable tool of Microsoft Word 2010. The feature allow ...

  7. [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)

    [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date  周六 10 一月 2015 By 钟谢伟 Category website develop ...

  8. [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一)

    [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一) Date  周二 06 一月 2015 By 钟谢伟 Tags mvc4 / asp.net 示 ...

  9. c++ builder 2010 错误 F1004 Internal compiler error at 0x9740d99 with base 0x9

    今天遇到一个奇怪的问题,拷贝项目后,在修改,会出现F1004 Internal compiler error at 0x9740d99 with base 0x9 ,不管怎么改,删除改动,都没用,关闭 ...

随机推荐

  1. ORA-01653: 表 xxxx 无法通过 8192 (在表空间 USERS 中) 扩展

    Oracle中增加表空间大小的四种方法 1:给表空间增加数据文件 ALTER TABLESPACE app_data ADD DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\OR ...

  2. KNIME + Python = 数据分析+报表全流程

    Python 数据分析环境 数据分析领域有很多可选方案,例如SPSS傻瓜式分析工具,SAS专业性商业分析工具,R和python这类需要代码编程类的工具.个人选择是python这类,包括pandas,n ...

  3. SWFUpload 在ie9上出现的bug

    SWFUpload 在ie9下会出现js错误 参考以下几个网址,备忘: http://code.google.com/p/swfupload/issues/detail?id=348 http://c ...

  4. LinuxC下获取UDP包中的路由目的IP地址和头标识目的地址

    在接受到UDP包后,有时候我们需要根据所接收到得UDP包,获取它的路由目的IP地址和头标识目的地址. (一)主要的步骤: 在setsockopt中设置IP_PKTINFO,然后通过recvmsg来获取 ...

  5. Python进程池举例

    multiprocessing包 from multiprocessing import Pool def a(num): print num if __name__ == "__main_ ...

  6. WPF实战案例-MVVM模式下在Xaml中弹出窗体

    相信很多学习和开发wpf项目的同学都了解过mvvm模式,同样,在mvvm模式下会有一个不可忽视的问题,就是怎么在xaml中弹出窗体,而不破坏MVVM本身的结构. 关于弹出窗体的方式还是很多的,本文先讲 ...

  7. 迁移桌面程序到MS Store(2)——Desktop App Converter

    迁移传统桌面程序到MS Store的另一种方式是使用Desktop App Converter工具.虽然本篇标题包含了Desktop App Converter(以下简称DAC),实际上我是来劝你别用 ...

  8. AJPFX技术分析入门

    AJPFX:技术分析入门 技术分析就是指通过考察历史数据来预测未来价格走向.外汇市场是非常讲技术分析的,而且分析师的基本功就是技术分析,但是,没有对基本面的准确把握,技术分析就会含糊.但是技术分析究其 ...

  9. solr 5.5使用 和pyg里 的4.10.3版 部署到tomcat中不一样(不使用内置jetty)

    http://www.cnblogs.com/zhuxiaojie/p/5764680.html

  10. SpringBoot从入门到逆天(1)

    1.SpringBoot是什么? <1>为Sping开发提供一个更 快捷更广泛的入门体验. <2>开箱即用,不合适时特可以快速抛弃. <3>提供一系列大型项目常用的 ...