dp(i)表示处理完[i,n]且i是放守卫塔的最小费用.

dp(i) = min{dp(j) + (j-i)(j-i-1)/2}+costi(i<j≤N)

然后斜率优化

-----------------------------------------------------------

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
#define f(x) (dp[x] * 2 + ll(x) * x)
const int maxn = 1000009;
ll dp[maxn];
int cost[maxn], N;
int q[maxn], qh = 0, qt = -1;
double K(int x, int y) {
return (double) (f(x) - f(y)) / (x - y);
}
int main() {
scanf("%d", &N);
for(int i = 1; i <= N; i++)
scanf("%d", cost + i);
cost[0] = 0;
dp[N] = cost[N];
q[++qt] = N;
for(int i = N; i--; ) {
while(qt - qh > 0 && K(q[qh], q[qh + 1]) > i * 2 + 1) qh++;
dp[i] = dp[q[qh]] + 1LL * (q[qh] - i) * (q[qh] - i - 1) / 2 + cost[i];
while(qt - qh > 0 && K(q[qt], i) > K(q[qt - 1], q[qt])) qt--;
q[++qt] = i;
}
printf("%lld\n", dp[0]);
return 0;
}

-----------------------------------------------------------

3156: 防御准备

Time Limit: 10 Sec  Memory Limit: 512 MB
Submit: 788  Solved: 375
[Submit][Status][Discuss]

Description

Input

第一行为一个整数N表示战线的总长度。

第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai。

Output

共一个整数,表示最小的战线花费值。

Sample Input

10
2 3 1 5 4 5 6 3 1 2

Sample Output


18

HINT

1<=N<=10^6,1<=Ai<=10^9

Source

Katharon+#1

转载于:https://www.cnblogs.com/JSZX11556/p/4985658.html

BZOJ 3156: 防御准备( dp + 斜率优化 )相关推荐

  1. bzoj 3156: 防御准备(斜率DP)

    3156: 防御准备 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 2148  Solved: 912 [Submit][Status][Discu ...

  2. 【BZOJ-3156】防御准备 DP + 斜率优化

    3156: 防御准备 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 951  Solved: 446 [Submit][Status][Discus ...

  3. BZOJ 1597: [Usaco2008 Mar]土地购买( dp + 斜率优化 )

    既然每块都要买, 那么一块土地被另一块包含就可以不考虑. 先按长排序, 去掉不考虑的土地, 剩下的土地长x递增, 宽y递减 dp(v) = min{ dp(p)+xv*yp+1 } 假设dp(v)由i ...

  4. BZOJ 4518: [Sdoi2016]征途 [斜率优化DP]

    4518: [Sdoi2016]征途 题意:\(n\le 3000\)个数分成m组,一组的和为一个数,求最小方差\(*m^2\) DP方程随便写\(f[i][j]=min\{f[k][j-1]+(s[ ...

  5. BZOJ 2149 拆迁队 斜率优化DP 主席树

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2149 题目大意: 一个长度为 n n的序列aa,改变其中的某些数使之成为一个单调递增序列, ...

  6. [HNOI2008]玩具装箱toy(dp+斜率优化)

    斜率优化问题一般都是决策单调问题.对于这题能够证明单调决策. 令sum[i]=sigma(c [k] ) 1<=k<=i  ,  f[i]=sum[i]+i ,  c=L+1; 首先我们能 ...

  7. UVAlive 6131 dp+斜率优化

    这道题和06年论文<从一类单调性问题看算法的优化>第一道例题很相似. 题意:给出n个矿的重量和位置,这些矿石只能从上往下运送,现在要在这些地方建造m个heap,要使得,sigma距离*重量 ...

  8. hdu 3507 Print Article(dp+斜率优化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3507 题解:显然这题的递推很容易得到 dp[i]=dp[j]+(sum[i]-sum[j])^2+m ...

  9. C++剑指offer:解题报告之DP优化学习记 (二) ——浅论DP斜率优化 (Print Article 【HDU - 3507】 )

    链接:https://share.weiyun.com/5LzbzAc 目录 前言 斜率优化前期准备 1.从状态转移方程出发 2.推理状态转移方程 对结论的进一步推导 干货!综合结论 判断斜率大小的方 ...

最新文章

  1. eclipse 操作HDFS时出现Permission denied的三个解决方法
  2. 大数据笔记2019.5.10
  3. Matlab dir函数
  4. linux 配置tensorflow 全过程记录
  5. webservices系列(二)——JAX-WS文件上传下载
  6. MySQL删除重复数据保留1条
  7. 搭建MyBatis框架
  8. powerdesigner连接mysql,并导出其数据模型的方法
  9. linux切换软件版本,使用Linux的alternatives命令替换选择软件的版本方法
  10. php记录上次观看记录,PHP Cookei记录用户历史浏览信息的代码
  11. -f linux_SAIL-F-8-2-4-0-12流量积算仪-老友网
  12. Communication System dp 动态规划 || 贪心
  13. NSIS:在线下载并安装程序
  14. 图片标注工具Labelme的安装及使用方法
  15. 先进先出(FIFO)页面置换算法 C语言实现
  16. ibm 2011年服务器型号,IBM x 系列服务器CPU型号
  17. 小波分析:db小波的分解与重构
  18. 为什么wps office在编辑文字鼠标点击一下整篇文字的背景就立刻变为灰色的
  19. java jvisualvm linux,在CentOS上安装jvisualvm
  20. seo优化-SEO实战密码—60天网站流量提高20倍

热门文章

  1. php 操作权限,liunx下PHP操作权限文件
  2. linux查看服务依赖关系图,技术|教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性
  3. linux命令大写输入,在Linux命令行内的大小写转换
  4. python3.7 pip安装_python3.7安装, 解决pip is configured with locations that require TLS/SSL问题...
  5. python document_python 处理document文档 保留原样式
  6. 被解救的代码 - 代码即服务时代来了!
  7. 应用编排与管理:Job DaemonSet
  8. linux中bash的功能主要有,Linux系统中的Bash功能的介绍
  9. c语言将字符项链,【能量项链】 (C语言代码)
  10. 拦截锚点修改url_浅谈URL跳转与Webview安全