原题链接:http://www.acm.uestc.edu.cn/#/problem/show/879

题意:

中文题

题解:

这是一道斜率dp的题。

先把$a$数组排个序。

令$dp[i][j]$表示第$i$个人坐在第$j$个箱子里面的最优解。

容易得到以下转移方程:

$$dp[i][j]=min \left \{ dp[k][j-1]+(a[i]-a[k+1])^2 \right \}$$

观察这个式子,发现好像可以斜率优化:

若$u>v$且$u$要比$v$优,即:

$$dp[u][j-1]+(a[i]-a[u+1])^2<dp[v][j-1]+(a[i]-a[v+1])^2$$

整理后可得到下式:

$$\frac {dp[u][j-1]+a[u+1]^2-(dp[v][j-1]+a[v+1]^2)} {a[u+1]-a[v+1]} < 2*a[i]$$

$$Y(t)=dp[t][j-1]+a[t+1]^2$$

$$X(t)=a[t+1]$$

那么原式就是:

$$\frac {Y(u)-Y(v)} {X(u)-X(v)} <2*a[i]$$

这是一个描述斜率的东西,它表明,如果$u,v$的斜率小于$2*a[i]$,那么$u$一定比$v$更优,否则$v$不比$u$差。

令$S(u,v)=\frac {Y(u)-Y(v)} {X(u)-X(v)}$,那么如果$S(u,v)<S(v,w)$,那么$b$一定是没用的状态,这是因为假如$S(u,v)<2*a[i]$,那么$u$比$v$更优,如果$S(u,v) \geq 2*a[i]$,那么$S(v,w) \geq 2*a[i]$,那么$w$不比$v$差。所以$v$就是没用的节点。

综上,我们可以通过一个双端队列来维护一个下凸包,向队尾插入值,维护队尾的单调性。从队首寻找答案。

代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#define MAX_N 100005
using namespace std;int n,m;
int w[MAX_N];int dp[MAX_N][2];double Y(int t,int j){return dp[t][j]+w[t+1]*w[t+1];
}double X(int t){return w[t+1];
}double Slope(int u,int v,int j) {if (X(u) == X(v))return 1e233;return (Y(u, j) - Y(v, j)) / (X(u) - X(v));
}int que[MAX_N];int main() {scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++)scanf("%d", &w[i]);sort(w + 1, w + 1 + n);for (int i = 1; i <= n; i++)dp[i][1] = (w[i] - w[1]) * (w[i] - w[1]);for (int j = 2; j <= m; j++) {int cur = j & 1;int front = 0, rear = 0;que[rear++] = 1;for (int i = 2; i <= n; i++) {while (rear - front > 1 && Slope(que[front], que[front + 1], cur ^ 1) <= 2 * w[i])front++;dp[i][cur] = dp[que[front]][cur ^ 1] + (w[i] - w[que[front] + 1]) * (w[i] - w[que[front] + 1]);while (rear - front > 1 && Slope(que[rear - 1], que[rear - 2], cur ^ 1) >= Slope(i, que[rear - 1], cur ^ 1))rear--;que[rear++] = i;}}printf("%d\n", dp[n][m & 1]);return 0;
}

转载于:https://www.cnblogs.com/HarryGuo2012/p/4841215.html

CDOJ 879 摩天轮 dp+斜率优化相关推荐

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

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

  2. BZOJ 3156: 防御准备( dp + 斜率优化 )

    dp(i)表示处理完[i,n]且i是放守卫塔的最小费用. dp(i) = min{dp(j) + (j-i)(j-i-1)/2}+costi(i<j≤N) 然后斜率优化 ------------ ...

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

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

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

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

  5. UVAlive 6131 dp+斜率优化

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

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

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

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

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

  8. P3994 高速公路 树形DP+斜率优化+二分

    $ \color{#0066ff}{ 题目描述 }$ C国拥有一张四通八达的高速公路网树,其中有n个城市,城市之间由一共n-1条高速公路连接.除了首都1号城市,每个城市都有一家本地的客运公司,可以发车 ...

  9. FZU - 2302  Necklace (dp+斜率优化)

    I - Necklace FZU - 2302 题目大意:给出一个环每一段的价值为区间和的平方,求将环断成k断的最小价值之和. 解题思路:容易想到n^4的dp 首先断环成链,将数组复制一遍. 用dp[ ...

最新文章

  1. 如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)
  2. WijmoJS 使用Web Workers技术,让前端 PDF 导出效率更高效
  3. python中for x in range_python教程:对 [lambda x: x*i for i in range(4)] 理解
  4. 6个步骤卸载wine
  5. Anti-Aliasing SSAA MSAA MLAA SRAA 简介
  6. xml解析-jaxp添加结点
  7. 本地网页服务器 跨域,nodejs搭建本地服务器轻松解决跨域问题
  8. react配合python_部署React前端和Django后端的3种方法
  9. 傅立叶变换,时域,频域二
  10. 对于 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针 的简单理解
  11. IPMI IPMB协议
  12. Mybatis3.5.4官网下载
  13. 一文彻底搞懂方差、协方差、协方差矩阵
  14. Linux 根分区扩容
  15. 计算机无法安装MUMU模拟器,电脑手机模拟器,详细教您电脑手机模拟器MuMu模拟器怎么使用...
  16. Ubuntu修改DNS
  17. STM32MP157移植Qt5.12.10
  18. window系统 实现FFmpeg 录制音视频
  19. cs231n-2022-assignment1#Q1:kNN图像分类器实验
  20. QGraphicsItem图元旋转缩放和自定义图元(三)

热门文章

  1. Android实现本地视频+录制视频+视频压缩上传
  2. 我放弃你!因为你的不珍惜:伤感日志
  3. Out-of-Distribution Detection开篇之作SMOOD论文阅读
  4. 程序员如何赚钱(转)
  5. Java开发环境搭建01:JDK安装和配置
  6. 微信小程序商城系统源码
  7. 微商怎么通过美柚引流?粉丝必定是精准的宝妈粉
  8. 纪念古龙诞辰:论古龙的江湖为何没有一“tong”?
  9. 工业互联网安全需要“融合”发展
  10. SpringCloud 之分布式事务解决方案