博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1096 【ZJOI2007】 仓库建设
阅读量:4647 次
发布时间:2019-06-09

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

Description

  L公司有N个工厂,由高到底分布在一座山上。如图所示,工厂1在山顶,工厂N在山脚。由于这座山处于高原内

陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用。突然有一天,L公司的总裁L先生接到气象
部门的电话,被告知三天之后将有一场暴雨,于是L先生决定紧急在某些工厂建立一些仓库以免产品被淋坏。由于
地形的不同,在不同工厂建立仓库的费用可能是不同的。第i个工厂目前已有成品Pi件,在第i个工厂位置建立仓库
的费用是Ci。对于没有建立仓库的工厂,其产品应被运往其他的仓库进行储藏,而由于L公司产品的对外销售处设
置在山脚的工厂N,故产品只能往山下运(即只能运往编号更大的工厂的仓库),当然运送产品也是需要费用的,
假设一件产品运送1个单位距离的费用是1。假设建立的仓库容量都都是足够大的,可以容下所有的产品。你将得到
以下数据:1:工厂i距离工厂1的距离Xi(其中X1=0);2:工厂i目前已有成品数量Pi;:3:在工厂i建立仓库的费用
Ci;请你帮助L公司寻找一个仓库建设的方案,使得总的费用(建造费用+运输费用)最小。

Input

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

Output

  仅包含一个整数,为可以找到最优方案的费用。

HINT

  对于100%的数据, N ≤1000000。 所有的Xi, Pi, Ci均在32位带符号整数以内,保证中间计算结果不超过64位带符号整数。 

 

  于是最近我又开始刷BZOJ了……不过以我这水平也只能刷些水题……

  又碰到了一个斜率优化dp……现在好像已经有点感觉了,反正一维dp超级简单复杂度又不对的题大多数都是斜率优化题。

  一维方程大家应该都会……设fi表示在工厂i修仓库的最小费用,每次转移枚举上一个仓库在哪里即可。

  这个斜率我已经不想推了……原谅我太懒了。网上写的都很好,要看请。WA了三发因为算斜率时没有开double简直差评……

  下面贴代码:

#include
#include
#include
#include
#include
#define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)#define maxn 1000010using namespace std;typedef long long llg;struct data{ llg x,y;}s[maxn];int n,X[maxn],C[maxn],d[maxn],l,r;llg s1[maxn],s2[maxn],f[maxn];int getint(){ int w=0;bool q=0; char c=getchar(); while((c>'9'||c<'0')&&c!='-') c=getchar(); if(c=='-') c=getchar(),q=1; while(c>='0'&&c<='9') w=w*10+c-'0',c=getchar(); return q?-w:w;}long double xie(data x,data y){ if(x.x==y.x) return 1e100; return (long double)(y.y-x.y)/(long double)(y.x-x.x);}int main(){ File("a"); n=getint(); for(int i=1,P;i<=n;i++){ X[i]=getint(); P=getint(); C[i]=getint(); s1[i]=s1[i-1]+P; s2[i]=s2[i-1]+(llg)X[i]*(llg)P; } for(int i=1;i<=n;i++){ while(l
xie(s[d[r]],s[i])) r--; d[++r]=i; } printf("%lld",f[n]);}

转载于:https://www.cnblogs.com/lcf-2000/p/5920108.html

你可能感兴趣的文章
[转][译]ASP.NET MVC 4 移动特性
查看>>
SOC CPU
查看>>
get_result --perl
查看>>
163镜像地址
查看>>
ehcache memcache redis 三大缓存男高音
查看>>
eclipse 快捷键Open Implementation 直接退出
查看>>
minix中管道文件和设备文件的读写
查看>>
JAXB - Annotations, Annotations for Enums: XmlEnum, XmlEnumValue
查看>>
context 插图
查看>>
文件管理器中不支持的wma歌曲也显示可以播放的音乐图标
查看>>
Java基础学习-流程控制语句
查看>>
Shell中read的常用方式
查看>>
01javascript数据类型
查看>>
asp.net实现md5加密方法详解
查看>>
AJAX
查看>>
table 的thead th 固定 tbody滚动例子
查看>>
并行计算思考----回溯法求解数独问题
查看>>
设计模式:模板模式
查看>>
和菜鸟一起学OK6410之ADC模块
查看>>
代理 模式
查看>>