传送门

斜率优化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]仓库建设相关推荐

  1. bzoj 1096: [ZJOI2007]仓库建设(斜率DP)

    1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 5232  Solved: 2324 [Submit][St ...

  2. bzoj1096 [ZJOI2007]仓库建设

    [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MB Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶, ...

  3. [ZJOI2007]仓库建设(斜率优化)

    L公司有N个工厂,由高到底分布在一座山上. 工厂1在山顶,工厂N在山脚. 由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用. 突然有一天,L公司的总裁L先生接到气象部 ...

  4. 【BZOJ 1096】[ZJOI2007]仓库建设

    [链接] 链接 [题意] 在这里输入题意 [题解] 设f[i]表示在第i个地方设立一个仓库,且前面符合要求的最小花费. 则 \(f[i] = min(f[j] + c[i] + dis[i]*(sum ...

  5. [ZJOI2007]仓库建设

    传送门 考虑用dp[i]表示把前i个地点的物品全部安置好的最小花费.因为物品只能往下运,所以当前这个位置必须建仓库,dp方程很好想: \[dp[i] = min_{j=1}^{i-1}\{dp[j] ...

  6. bzoj1096【ZJOI2007】仓库建设

    1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec   Memory Limit: 162 MB Submit: 3659   Solved: 1602 [ Submit] ...

  7. 【BZOJ】【1096】【ZJOI2007】仓库建设

    DP/斜率优化 Orz Hzwer 八中好像挂了--明天再提交吧-- UPD:2015-03-12 17:24:43 算了,毕竟是第一道题,还是仔细写一下斜率优化的过程吧.(部分引自Hzwer的题解) ...

  8. 【斜率优化】仓库建设(luogu 2120)

    仓库建设 luogu 2120 题目大意 有一个斜坡,上面有n个工厂(山顶是1,山脚是nnn,工厂都是漏填),上面有pip_ipi​个货物,和工厂1的距离为x1x_1x1​ 现在有一场大雨,你可以在某 ...

  9. BZOJ1096-[ZJOI2007]仓库建设

    BZOJ1096-[ZJOI2007]仓库建设 题意: 题解: 斜率优化dp.为啥我做过的斜率优化题没有一道是1A的???还有这道题并不难,就当我试一下mathjax吧. 我们设$tot_{i}=\s ...

最新文章

  1. Google推出的新服务:Docs Spreadsheets
  2. 前端_JavaScript_Method
  3. spring --(12)bean的生命周期
  4. Oracle优化12-10053事件
  5. 1091 N-自守数
  6. [python作业AI毕业设计博客]大数据Hadoop工具python教程1-HDFS Hadoop分布式文件系统...
  7. bootstrap-wysiwyg 结合 base64 解码 .net bbs 图片操作类 (三) 图片裁剪
  8. linux发送日志命令,linux:记录不同用户使用的命令发送到指定的目录中(可发送到日志服务器中)...
  9. ios 应用程序证书安装以及发布
  10. Stacking 模型融合详解(附python代码)
  11. 泰安市建筑物矢量数据(Shp格式+带高度)
  12. 《松本行弘的程序世界》精彩书摘
  13. 《C++ API设计》摘录
  14. 什么是元数据 (MetaData)
  15. JSP中如何把一个页面的信息传递到另一个页面来
  16. [Java]public T void method,此地泛型的意思
  17. 2016 HCTF web writeup
  18. SERVER SQL CASE
  19. 浙大PTA拼题A读者验证码刷题页面、PTA免费刷题页面(不需要读者验证码)
  20. 利用『爬虫』 折衷解决 个人支付宝支付系统 --- 获取账单信息

热门文章

  1. Android:解决Gradle DSL method not found: 'runProguard()' 问题
  2. SetGet and MACRO
  3. 关于C语言中 字符串常量的问题
  4. unity镜像_通过镜像学习Unity Multiplayer Basics
  5. fiddler使用技巧进阶,如何抓包修改数据?——AutoResponder重定向
  6. PAT(甲级)2018年冬季考试 7-1 Google Recruitment
  7. Swing基础知识(更新中)
  8. java for 两个条件_for循环条件里定义2个变量为什么会报错
  9. 参加UI设计培训要学多久
  10. intellij idea 必知的debug功能