Snowdrop修长廊

描述

Snowdrop现在是世界著名的工程师。因为重庆的天气太热了,
Snowdrop决定修一条长廊,并且长廊要覆盖必须覆盖的n个点。为
了简化整个问题,我们把一条路抽象成一维的,原点在0,有n个必须
覆盖的点,每个必须覆盖的点的坐标为,覆盖点的代价可以设成
(),其中,为固有花费。现在,
他想知道覆盖所有必须的点所需要的最小花费是多少。

输入

第一行输入一个T表示有T组样例
接下来块
每块第一行输入
接下来一行描述个点的距离原点位置

输出

输出最小花费

样例输入

1
10 5000
1
23
45
67
101
124
560
789
990
1019

样例输出

30726

【题意】中文题面。

【分析&解题思路】 裸斜率优化,就是要注意到dp[i]=dp[j-1]+(sum[i]-sum[j])^2里面,不包含j.dp[i]有初值,但是斜率优化不会考虑他自己是最优值的情况。

【AC代码】

#include <set>
#include <map>
#include <queue>
#include <stack>
#include <stdio.h>
#include <iostream>
#include <algorithm>
typedef long long LL;
using namespace std;
const int maxn = 500010;
LL dp[maxn],sum[maxn],q[maxn];
LL n,m,head,tail;
LL get_DP(int j,int k)
{return dp[k-1]+m+(sum[j]-sum[k])*(sum[j]-sum[k]);
}
LL get_UP(int j,int k) //yj-yk部分
{return dp[j-1]+sum[j]*sum[j]-(dp[k-1]+sum[k]*sum[k]);
}
LL get_DOWN(int j,int k) //xj-xk部分
{return 2*(sum[j]-sum[k]);
}
int main()
{int tt;scanf("%d",&tt);while(tt--){scanf("%I64d%I64d",&n,&m);for(int i=1; i<=n; i++) scanf("%I64d",&sum[i]);sum[0]=dp[0]=0;head=tail=0;q[tail++] = 0;//斜率优化for(int i=1; i<=n; i++){//求解过程dp[i]=dp[i-1]+m;while(head+1<tail&&get_UP(q[head+1],q[head])<=sum[i]*get_DOWN(q[head+1],q[head])) head++;dp[i] = min(get_DP(i,q[head]),dp[i]);//维护解集while(head+1<tail&&get_UP(i,q[tail-1])*get_DOWN(q[tail-1],q[tail-2])<=get_UP(q[tail-1],q[tail-2])*get_DOWN(i,q[tail-1]))tail--;q[tail++] = i;}printf("%lld\n",dp[n]);}return 0;
}

B: Snowdrop修长廊相关推荐

  1. 斜率优化 Snowdrop修长廊 scu dp练习B题

    传送门:点击打开链接 题意:要覆盖完n个点,要覆盖掉[i,j]的代价是(X[i]-X[j])*(X[i]-X[j])+W,求覆盖完所有点的最小代价 思路:这是一道非常裸的斜率优化. 网上讲解斜率优化的 ...

  2. [SCU 4509] Snowdrop修长廊 (斜率DP)

    SCU - 4509 使用若干条线段,覆盖坐标轴上的 N个点 覆盖 [i,j][i, j]的代价为cost(i,j)=W+(xi−xj)2cost(i,j) = W + (x_i-x_j)^2 求覆盖 ...

  3. fc天使之翼2020修改版下载_海岛奇兵无限钻石修改版下载-海岛奇兵无限钻石修改版下载2020...

    海岛奇兵无限钻石修改版绝对是小伙伴们都在寻找的资源,修改众多资源,玩家可以解锁不同兵种建立更强大的部队啦!通过塔防与掠夺不断强化我方战力,合理运用策略至关重要,喜欢的朋友千万别错过! 修改无限钻石.金 ...

  4. 隐藏探针显示php版本号,修改版雅黑PHP探针 支持PHP7+(v0.4.7.2)

    雅黑 PHP 探针用于 Linux 系统(不推荐使用于 Windows 系统),每秒更新,不用刷网页.可以实时查看服务器硬盘资源.内存占用.网卡流量.系统负载.服务器时间等信息,1 秒钟刷新一次. 可 ...

  5. 普罗米修斯 监控_完美的分布式监控系统——普罗米修斯

    DevOps工程师或SRE工程师,可能都知道Prometheus普罗米修斯.Prometheus于2012年由SoundCloud创建,目前已经已发展为最热门的分布式监控系统.Prometheus完全 ...

  6. 大学计算机思维导图_我学计算机,也会修电脑

    "你学啥专业?" "计算机科学." "帮我修电脑吧." "--" 现实中-- 金融专业的被问炒股 土木专业的被问装修 天 ...

  7. 大学计算机专业副修课,计算机学院举行本科课程教学大纲修订工作研讨会

    根据教务函[2013]25号<关于编写2013版课程教学大纲的通知>精神,为配合学校做好2013版本科人才培养方案的修订工作,适应培养应用型人才的需要,同时为学院2015年专业评估做好准备 ...

  8. 《Photoshop Lab修色圣典(修订版)》—第1课1.7节言归正传

    本节书摘来自异步社区<Photoshop Lab修色圣典(修订版)>一书中的第1课1.7节言归正传,作者[美]Dan Margulis,更多章节内容可以访问云栖社区"异步社区&q ...

  9. 快车 FlashGet 3.1 修正版(1057)

    快车 FlashGet 3.1 修正版(1057) SM发布于 2009-06-25 23:43:23| 2326 次阅读 字体:大 小 打印预览 感谢VxuE的投递 快车(FlashGet)是互联网 ...

最新文章

  1. 厦门大学江保详:缺陷检测的讲解!
  2. Linux(64位)下OpenBabel 2.4.1、python2.7和Ipython实战(二)
  3. 切勿版本化Web API
  4. 谈谈InnoDB下的记录锁,间隙锁,next-key锁
  5. Binder实用指南(一) - 理解篇
  6. 【数据结构总结】第七章 查找
  7. python 面部识别_一文教你在Python中打造你自己专属的面部识别系统
  8. Class类和Object类及用法(一)
  9. JAVA基础系列:内部类获取外部类的成员变量
  10. 电脑音响怎么插_BMW宝马5系G38改原厂全套哈曼卡顿音响+无钥匙进入,厚街宝马原厂改装中心...
  11. (超赞的Chrome翻译插件)沙拉查词-聚合词典划词翻译
  12. Python中 的Hash表查找与List的index()对比
  13. 菜鸟驿站是什么快递_菜鸟驿站是什么快递
  14. ThinkPadnbsp;E40nbsp;硬盘异响…
  15. 【高级UI】【027】RecyclerView侧滑源码解析
  16. 牛客面经 | BAT、美团、360、滴滴新锐……2W字干货,这不仅仅是一篇面经
  17. HttpClient的使用与连接资源释放
  18. ios 自己服务器 苹果支付_修复苹果IOS支付
  19. win10企业版2016长期服务激活教程
  20. 深入浅出内存马(一)

热门文章

  1. 怎么升级鸿蒙手机,华为手机怎么升级鸿蒙?华为鸿蒙系统支持手机型号大全
  2. echarts地图 鼠标滚动控制缩放大小比例
  3. MYSQL性能提升规范
  4. vue点击按钮实现跳转到另一个vue页面
  5. 数据结构与算法——复杂度
  6. uniapp+Vue3+Vite+ts+pinia
  7. 听不进真话,是穷人最大的困境
  8. android判断存储卡,Android中判断SD卡状态
  9. 原成都传智播客团队启用新品牌名源代码教育
  10. 5G NR—— RRC状态