[ZJOI2007]仓库建设
传送门
考虑用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]仓库建设相关推荐
- bzoj1096 [ZJOI2007]仓库建设
[ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MB Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶, ...
- bzoj 1096: [ZJOI2007]仓库建设(斜率DP)
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 5232 Solved: 2324 [Submit][St ...
- [ZJOI2007]仓库建设(斜率优化)
L公司有N个工厂,由高到底分布在一座山上. 工厂1在山顶,工厂N在山脚. 由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用. 突然有一天,L公司的总裁L先生接到气象部 ...
- BZOJ 1096: [ZJOI2007]仓库建设
传送门 斜率优化DP入门题 显然如果在一个位置 i 建一个仓库,且上一个仓库位置为 j 那么从 j+1到 i 的物品显然都要存在 i 仓库是最优的 设 $f [ i ]$ 表示在第 i 个工厂建设仓库 ...
- 【BZOJ 1096】[ZJOI2007]仓库建设
[链接] 链接 [题意] 在这里输入题意 [题解] 设f[i]表示在第i个地方设立一个仓库,且前面符合要求的最小花费. 则 \(f[i] = min(f[j] + c[i] + dis[i]*(sum ...
- bzoj1096【ZJOI2007】仓库建设
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3659 Solved: 1602 [ Submit] ...
- 【斜率优化】仓库建设(luogu 2120)
仓库建设 luogu 2120 题目大意 有一个斜坡,上面有n个工厂(山顶是1,山脚是nnn,工厂都是漏填),上面有pip_ipi个货物,和工厂1的距离为x1x_1x1 现在有一场大雨,你可以在某 ...
- BZOJ1096-[ZJOI2007]仓库建设
BZOJ1096-[ZJOI2007]仓库建设 题意: 题解: 斜率优化dp.为啥我做过的斜率优化题没有一道是1A的???还有这道题并不难,就当我试一下mathjax吧. 我们设$tot_{i}=\s ...
- Composer私有仓库建设与开发入门
概述 Composer作用此处不赘述,本文旨在指引Composer私有仓库建设入门,并记录具体操作以供参考. 本文默认读者已经了解Composer是什么和怎么用.PHP命名空间.Gitlab使用.Ng ...
最新文章
- 【机器学习入门到精通系列】推荐系统之协同过滤算法
- 汇编语言 8086+8255A仿真中断控制
- docker 外部连接_如何从主机外部(同一网络)连接到Docker容器[Windows]
- C++ gets, getline ( string流)
- HDU -2243 考研路茫茫——单词情结(AC自动机+矩阵快速幂)
- 如何在 ASP.NET Core 中使用 Route 特性
- [机器学习-回归算法]Sklearn之线性回归实战
- 华中科技计算机基础第五次,华中科技大学c++第5次上机作业
- shell脚本一键安装二进制Apache
- 陈希孺《概率论与数理统计》读书笔记
- matlab仿真三相变压器,三相变压器励磁涌流的MATLAB仿真与分析
- pageHelper.startPage(m,n)的用法
- 使用七牛云存储图片案例
- chrome插件之网页翻译插件
- JavaSE-day01
- 方法教程:一分钟把网易云音乐上的MV/mv视频下载到本地电脑
- 专访腾讯高级交互设计师WingST:交互设计师的思维、眼界、手段和精神
- 2021-11-24-SWUSTOJ616-C语言的排序查找
- 如何从pastebin粘贴一段代码到putt…
- allegro 16.6或者17.0把45度线转换成圆弧
热门文章
- emacs haskell mode 在windows 下的配置
- IIS7 经典模式和集成模式的区别分析(转载)
- idea之springboot端口被占用/跳转到login
- mysql8 :客户端连接caching-sha2-password问题
- java classnotfoundexception e_关于解释class文件时出现java.lang.ClassNotFoundException的问题...
- 同样是数据分析师,他靠“打标签”总被夸,我天天加班取数还被骂
- 案例学习BlazeDS+Spring之三InSync01查找联系人
- java用流实现复制功能_【java】IO流 实现简单的复制功能
- html 清除flex,清除display:flex样式
- vue搭配animate4版本失效