BZOJ 1096: [ZJOI2007]仓库建设
传送门
斜率优化DP入门题
显然如果在一个位置 i 建一个仓库,且上一个仓库位置为 j 那么从 j+1到 i 的物品显然都要存在 i 仓库是最优的
设 $f [ i ]$ 表示在第 i 个工厂建设仓库时,工厂 1 到 i 的物品都转移好的最小花费
考虑上一个仓库的位置 j
设工厂 i 离工厂 1 的距离为 $L[i]$
那么花费就是$L[i]\cdot \sum _{k=j+1}^{i}P[k]-\sum _{k=j+1}^{i}(L[k]\cdot P[k])$
设
那么方程就是 $f[i]=f[j]+L[i]\cdot (sumA[i]-sumA[j])-sumB[i]+sumB[j]+C[i]$
然后把式子拆开直接斜率优化
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<vector> using namespace std; typedef long long ll; inline int read() {int x=0,f=1; char ch=getchar();while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); }while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); }return x*f; } const int N=1e6+7; int n; ll L[N],P[N],C[N]; ll sumA[N],sumB[N],f[N]; int Q[N],hea=1,las=1; inline ll X(int x) { return sumA[x]; } inline ll Y(int x) { return f[x]+sumB[x]; } inline double slope(int x,int y) { return (double)((Y(x)-Y(y)))/(X(x)-X(y)); } int main() {n=read();for(int i=1;i<=n;i++){L[i]=read(),P[i]=read(),C[i]=read();sumA[i]=sumA[i-1]+P[i];sumB[i]=sumB[i-1]+P[i]*L[i];}for(int i=1;i<=n;i++){while(hea<las && slope(Q[hea],Q[hea+1])<L[i] ) hea++;int j=Q[hea];f[i]=f[j]+(sumA[i]-sumA[j])*L[i]-sumB[i]+sumB[j]+C[i];while(hea<las && slope(Q[las-1],i) < slope(Q[las-1],Q[las]) ) las--;Q[++las]=i;}printf("%lld",f[n]);return 0; }
转载于:https://www.cnblogs.com/LLTYYC/p/10166776.html
BZOJ 1096: [ZJOI2007]仓库建设相关推荐
- bzoj 1096: [ZJOI2007]仓库建设(斜率DP)
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 5232 Solved: 2324 [Submit][St ...
- bzoj1096 [ZJOI2007]仓库建设
[ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MB Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶, ...
- [ZJOI2007]仓库建设(斜率优化)
L公司有N个工厂,由高到底分布在一座山上. 工厂1在山顶,工厂N在山脚. 由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用. 突然有一天,L公司的总裁L先生接到气象部 ...
- 【BZOJ 1096】[ZJOI2007]仓库建设
[链接] 链接 [题意] 在这里输入题意 [题解] 设f[i]表示在第i个地方设立一个仓库,且前面符合要求的最小花费. 则 \(f[i] = min(f[j] + c[i] + dis[i]*(sum ...
- [ZJOI2007]仓库建设
传送门 考虑用dp[i]表示把前i个地点的物品全部安置好的最小花费.因为物品只能往下运,所以当前这个位置必须建仓库,dp方程很好想: \[dp[i] = min_{j=1}^{i-1}\{dp[j] ...
- bzoj1096【ZJOI2007】仓库建设
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3659 Solved: 1602 [ Submit] ...
- 【BZOJ】【1096】【ZJOI2007】仓库建设
DP/斜率优化 Orz Hzwer 八中好像挂了--明天再提交吧-- UPD:2015-03-12 17:24:43 算了,毕竟是第一道题,还是仔细写一下斜率优化的过程吧.(部分引自Hzwer的题解) ...
- 【斜率优化】仓库建设(luogu 2120)
仓库建设 luogu 2120 题目大意 有一个斜坡,上面有n个工厂(山顶是1,山脚是nnn,工厂都是漏填),上面有pip_ipi个货物,和工厂1的距离为x1x_1x1 现在有一场大雨,你可以在某 ...
- BZOJ1096-[ZJOI2007]仓库建设
BZOJ1096-[ZJOI2007]仓库建设 题意: 题解: 斜率优化dp.为啥我做过的斜率优化题没有一道是1A的???还有这道题并不难,就当我试一下mathjax吧. 我们设$tot_{i}=\s ...
最新文章
- Google推出的新服务:Docs Spreadsheets
- 前端_JavaScript_Method
- spring --(12)bean的生命周期
- Oracle优化12-10053事件
- 1091 N-自守数
- [python作业AI毕业设计博客]大数据Hadoop工具python教程1-HDFS Hadoop分布式文件系统...
- bootstrap-wysiwyg 结合 base64 解码 .net bbs 图片操作类 (三) 图片裁剪
- linux发送日志命令,linux:记录不同用户使用的命令发送到指定的目录中(可发送到日志服务器中)...
- ios 应用程序证书安装以及发布
- Stacking 模型融合详解(附python代码)
- 泰安市建筑物矢量数据(Shp格式+带高度)
- 《松本行弘的程序世界》精彩书摘
- 《C++ API设计》摘录
- 什么是元数据 (MetaData)
- JSP中如何把一个页面的信息传递到另一个页面来
- [Java]public T void method,此地泛型的意思
- 2016 HCTF web writeup
- SERVER SQL CASE
- 浙大PTA拼题A读者验证码刷题页面、PTA免费刷题页面(不需要读者验证码)
- 利用『爬虫』 折衷解决 个人支付宝支付系统 --- 获取账单信息
热门文章
- Android:解决Gradle DSL method not found: 'runProguard()' 问题
- SetGet and MACRO
- 关于C语言中 字符串常量的问题
- unity镜像_通过镜像学习Unity Multiplayer Basics
- fiddler使用技巧进阶,如何抓包修改数据?——AutoResponder重定向
- PAT(甲级)2018年冬季考试 7-1 Google Recruitment
- Swing基础知识(更新中)
- java for 两个条件_for循环条件里定义2个变量为什么会报错
- 参加UI设计培训要学多久
- intellij idea 必知的debug功能