传送门

考虑用dp[i]表示把前i个地点的物品全部安置好的最小花费。因为物品只能往下运,所以当前这个位置必须建仓库,dp方程很好想:

\[dp[i] = min_{j=1}^{i-1}\{dp[j] + \sum_{k=j+1}^{i-1} p[k] * (x[i] - x[k])\} + c[i]\]

用\(sum[n]\)表示\(\sum_{i=1}^np[i]\),\(ssum[n]\)表示\(\sum_{i=1}^np[i] * x[i]\)

之后把式子变个型套斜率优化就好了。得到:

\(\frac{dp[p]-dp[q]+ssum[p]-ssum[q]}{sum[p]-sum[q]} < x[i]\)时,q比p优。

因为这个x[i]是单调递增的,所以不用考虑特别多,套斜率优化即可。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<queue>
#include<cstring>
#define rep(i,a,n) for(int i = a;i <= n;i++)
#define per(i,n,a) for(int i = n;i >= a;i--)
#define enter putchar('\n')
#define pr pair<int,int>
#define mp make_pair
#define fi first
#define sc second
using namespace std;
typedef long long ll;
const int M = 1000005;
const int N = 10000005;ll read()
{ll ans = 0,op = 1;char ch = getchar();while(ch < '0' || ch > '9') {if(ch == '-') op = -1;ch = getchar();}while(ch >='0' && ch <= '9') ans = ans * 10 + ch - '0',ch = getchar();return ans * op;
}struct node
{ll x,p,c;
}a[M];ll sum[M],ssum[M],dp[M],n,q[M],head,tail;double slope(ll p,ll q)
{return (double)((dp[p]-dp[q]+ssum[p]-ssum[q]) / (sum[p]-sum[q]));
}int main()
{n = read(),head = tail = 1;rep(i,1,n) a[i].x = read(),a[i].p = read(),a[i].c = read();rep(i,1,n) sum[i] = sum[i-1] + a[i].p,ssum[i] = ssum[i-1] + a[i].x * a[i].p;rep(i,1,n){while(head < tail && slope(q[head],q[head+1]) < a[i].x) head++;dp[i] = dp[q[head]] + (sum[i] - sum[q[head]]) * a[i].x + ssum[q[head]] - ssum[i] + a[i].c;while(head < tail && slope(q[tail-1],q[tail]) > slope(q[tail],i)) tail--;q[++tail] = i;}printf("%lld\n",dp[n]);return 0;
}

转载于:https://www.cnblogs.com/captain1/p/10153401.html

[ZJOI2007]仓库建设相关推荐

  1. bzoj1096 [ZJOI2007]仓库建设

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

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

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

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

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

  4. BZOJ 1096: [ZJOI2007]仓库建设

    传送门 斜率优化DP入门题 显然如果在一个位置 i 建一个仓库,且上一个仓库位置为 j 那么从 j+1到 i 的物品显然都要存在 i 仓库是最优的 设 $f [ i ]$ 表示在第 i 个工厂建设仓库 ...

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

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

  6. bzoj1096【ZJOI2007】仓库建设

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

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

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

  8. BZOJ1096-[ZJOI2007]仓库建设

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

  9. Composer私有仓库建设与开发入门

    概述 Composer作用此处不赘述,本文旨在指引Composer私有仓库建设入门,并记录具体操作以供参考. 本文默认读者已经了解Composer是什么和怎么用.PHP命名空间.Gitlab使用.Ng ...

最新文章

  1. 【机器学习入门到精通系列】推荐系统之协同过滤算法
  2. 汇编语言 8086+8255A仿真中断控制
  3. docker 外部连接_如何从主机外部(同一网络)连接到Docker容器[Windows]
  4. C++ gets, getline ( string流)
  5. HDU -2243 考研路茫茫——单词情结(AC自动机+矩阵快速幂)
  6. 如何在 ASP.NET Core 中使用 Route 特性
  7. [机器学习-回归算法]Sklearn之线性回归实战
  8. 华中科技计算机基础第五次,华中科技大学c++第5次上机作业
  9. shell脚本一键安装二进制Apache
  10. 陈希孺《概率论与数理统计》读书笔记
  11. matlab仿真三相变压器,三相变压器励磁涌流的MATLAB仿真与分析
  12. pageHelper.startPage(m,n)的用法
  13. 使用七牛云存储图片案例
  14. chrome插件之网页翻译插件
  15. JavaSE-day01
  16. 方法教程:一分钟把网易云音乐上的MV/mv视频下载到本地电脑
  17. 专访腾讯高级交互设计师WingST:交互设计师的思维、眼界、手段和精神
  18. 2021-11-24-SWUSTOJ616-C语言的排序查找
  19. 如何从pastebin粘贴一段代码到putt…
  20. allegro 16.6或者17.0把45度线转换成圆弧

热门文章

  1. emacs haskell mode 在windows 下的配置
  2. IIS7 经典模式和集成模式的区别分析(转载)
  3. idea之springboot端口被占用/跳转到login
  4. mysql8 :客户端连接caching-sha2-password问题
  5. java classnotfoundexception e_关于解释class文件时出现java.lang.ClassNotFoundException的问题...
  6. 同样是数据分析师,他靠“打标签”总被夸,我天天加班取数还被骂
  7. 案例学习BlazeDS+Spring之三InSync01查找联系人
  8. java用流实现复制功能_【java】IO流 实现简单的复制功能
  9. html 清除flex,清除display:flex样式
  10. vue搭配animate4版本失效