博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
边坡优化主题5——bzoj 1096 [ZJOI2007]仓库建设 解决问题的方法
阅读量:6851 次
发布时间:2019-06-26

本文共 1872 字,大约阅读时间需要 6 分钟。

【原标题】

1096: [ZJOI2007]仓库建设

Time Limit: 10 Sec  
Memory Limit: 162 MB
Submit: 1998  
Solved: 816
[ ][ ]

Description

L公司有N个工厂,由高究竟分布在一座山上。

如图所看到的,工厂1在山顶。工厂N在山脚。

因为这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用。

突然有一天,L公司的总裁L先生接到气象部门的电话,被告知三天之后将有一场暴雨,于是L先生决定紧急在某些工厂建立一些仓库以免产品被淋坏。因为地形的不同,在不同工厂建立仓库的费用可能是不同的。

第i个工厂眼下已有成品Pi件。在第i个工厂位置建立仓库的费用是Ci。对于没有建立仓库的工厂,其产品应被运往其它的仓库进行储藏。而因为L公司产品的对外销售处设置在山脚的工厂N,故产品仅仅能往山下运(即仅仅能运往编号更大的工厂的仓库)。当然运送产品也是须要费用的,如果一件产品运送1个单位距离的费用是1。如果建立的仓库容量都都是足够大的,能够容下全部的产品。你将得到下面数据: 工厂i距离工厂1的距离Xi(当中X1=0);  工厂i眼下已有成品数量Pi;  在工厂i建立仓库的费用Ci; 请你帮助L公司寻找一个仓库建设的方案。使得总的费用(建造费用+运输费用)最小。

Input

第一行包括一个整数N,表示工厂的个数。接下来N行每行包括两个整数Xi, Pi, Ci, 意义如题中所述。

Output

仅包括一个整数。为能够找到最优方案的费用。

Sample Input

3
0 5 10
5 3 100
9 6 10

Sample Output

32

HINT

在工厂1和工厂3建立仓库。建立费用为10+10=20。运输费用为(9-5)*3 = 12。总费用32。假设仅在工厂3建立仓库。建立费用为10,运输费用为(9-0)*5+(9-5)*3=57。总费用67,不如前者优。

【数据规模】对于20%的数据, N ≤500;对于40%的数据, N ≤10000;对于100%的数据, N ≤1000000。 全部的Xi, Pi, Ci均在32位带符号整数以内,保证中间计算结果不超过64位带符号整数。

【分析与解法】总结一下我的近期的斜率优化题目的通解。

首先声明一下。我不会证明斜率优化的正确性。大概打表或是看数据范围就知道了。

第一步:推出n^2的方程,通常是一维方程,并且通用格式是:f[i]=min/max(f[j]+G)

f[i]=min(f[j]+sum[i]-sum[j]-G[j]*(a[i].x-a[j].x)+a[i].c);

第二步:如果j<k。且k比j要优。

把刚才的方程写成f[k]+G1<f[j]+G2的形式。

f[k]+sum[i]-sum[k]-G[k]*(a[i].x-a[k].x)+a[i].c<f[j]+sum[i]-sum[j]-G[j]*(a[i].x-a[j].x)+a[i].c

第三步:然后把有关k、j的项移到左边,把有关i的项移到右边。

有时两边要同除一个数使得右边仅仅剩下与i有关的成分。

抵消f[k]-sum[k]-G[k]*(a[i].x-a[k].x)<f[j]-sum[j]-G[j]*(a[i].x-a[j].x)
化简f[k]-f[j]+sum[j]-sum[k]+G[k]*a[k].x-G[j]*a[j].x<a[i].x*(G[k]-G[j])
除去(f[k]-f[j]+sum[j]-sum[k]+G[k]*a[k].x-G[j]*a[j].x)/(G[k]-G[j])<a[i].x

如今,就已经推出了斜率,再套用单调队列就可以。

【代码】

#include
#include
#define N 1000005using namespace std;typedef long long ll;struct arr{ll x,p,c;}a[N];ll sum[N],G[N],f[N],q[N],n,i,j,h,t;bool cmp(arr a,arr b){return a.x
xie(i,q[t])) t--; q[++t]=i; } printf("%lld",f[n]); return 0;}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
比较两个List的内容是否相等
查看>>
centos7 init
查看>>
php通过各种函数判断0和空
查看>>
基于easyui的文档管理系统springmvc+mybaits实现
查看>>
Chrome将证书透明度要求推迟至2018年
查看>>
jdbc的五大常见应用场景
查看>>
字符串
查看>>
剖析非同质化代币ERC721-全面解析ERC721标准
查看>>
Python八荣八耻
查看>>
华硕网络硬盘服务出问题!遭到中间人攻击
查看>>
java电子商务系统源码 Spring MVC+mybatis+spring cloud+spring boot+spring security
查看>>
Java 实现 给Excel模板赋值(直接打开表格赋值或者用自定义了名称的单元格(一块区域)赋值)...
查看>>
DataLakeAnalytics: 解析IP地址对应的国家城市地址的能力
查看>>
20181120上课截图
查看>>
FastReport教程:如何从命令行使用报表设计器和查看器
查看>>
sed命令详解及运用
查看>>
一篇文章让你全部看懂!内存-java模型-jvm结构
查看>>
[转] Valgrind使用
查看>>
0023-HOSTS配置问题导致集群异常故障分析
查看>>
《软件开发工具》要点
查看>>