B: Snowdrop修长廊
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修长廊相关推荐
- 斜率优化 Snowdrop修长廊 scu dp练习B题
传送门:点击打开链接 题意:要覆盖完n个点,要覆盖掉[i,j]的代价是(X[i]-X[j])*(X[i]-X[j])+W,求覆盖完所有点的最小代价 思路:这是一道非常裸的斜率优化. 网上讲解斜率优化的 ...
- [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 求覆盖 ...
- fc天使之翼2020修改版下载_海岛奇兵无限钻石修改版下载-海岛奇兵无限钻石修改版下载2020...
海岛奇兵无限钻石修改版绝对是小伙伴们都在寻找的资源,修改众多资源,玩家可以解锁不同兵种建立更强大的部队啦!通过塔防与掠夺不断强化我方战力,合理运用策略至关重要,喜欢的朋友千万别错过! 修改无限钻石.金 ...
- 隐藏探针显示php版本号,修改版雅黑PHP探针 支持PHP7+(v0.4.7.2)
雅黑 PHP 探针用于 Linux 系统(不推荐使用于 Windows 系统),每秒更新,不用刷网页.可以实时查看服务器硬盘资源.内存占用.网卡流量.系统负载.服务器时间等信息,1 秒钟刷新一次. 可 ...
- 普罗米修斯 监控_完美的分布式监控系统——普罗米修斯
DevOps工程师或SRE工程师,可能都知道Prometheus普罗米修斯.Prometheus于2012年由SoundCloud创建,目前已经已发展为最热门的分布式监控系统.Prometheus完全 ...
- 大学计算机思维导图_我学计算机,也会修电脑
"你学啥专业?" "计算机科学." "帮我修电脑吧." "--" 现实中-- 金融专业的被问炒股 土木专业的被问装修 天 ...
- 大学计算机专业副修课,计算机学院举行本科课程教学大纲修订工作研讨会
根据教务函[2013]25号<关于编写2013版课程教学大纲的通知>精神,为配合学校做好2013版本科人才培养方案的修订工作,适应培养应用型人才的需要,同时为学院2015年专业评估做好准备 ...
- 《Photoshop Lab修色圣典(修订版)》—第1课1.7节言归正传
本节书摘来自异步社区<Photoshop Lab修色圣典(修订版)>一书中的第1课1.7节言归正传,作者[美]Dan Margulis,更多章节内容可以访问云栖社区"异步社区&q ...
- 快车 FlashGet 3.1 修正版(1057)
快车 FlashGet 3.1 修正版(1057) SM发布于 2009-06-25 23:43:23| 2326 次阅读 字体:大 小 打印预览 感谢VxuE的投递 快车(FlashGet)是互联网 ...
最新文章
- 厦门大学江保详:缺陷检测的讲解!
- Linux(64位)下OpenBabel 2.4.1、python2.7和Ipython实战(二)
- 切勿版本化Web API
- 谈谈InnoDB下的记录锁,间隙锁,next-key锁
- Binder实用指南(一) - 理解篇
- 【数据结构总结】第七章 查找
- python 面部识别_一文教你在Python中打造你自己专属的面部识别系统
- Class类和Object类及用法(一)
- JAVA基础系列:内部类获取外部类的成员变量
- 电脑音响怎么插_BMW宝马5系G38改原厂全套哈曼卡顿音响+无钥匙进入,厚街宝马原厂改装中心...
- (超赞的Chrome翻译插件)沙拉查词-聚合词典划词翻译
- Python中 的Hash表查找与List的index()对比
- 菜鸟驿站是什么快递_菜鸟驿站是什么快递
- ThinkPadnbsp;E40nbsp;硬盘异响…
- 【高级UI】【027】RecyclerView侧滑源码解析
- 牛客面经 | BAT、美团、360、滴滴新锐……2W字干货,这不仅仅是一篇面经
- HttpClient的使用与连接资源释放
- ios 自己服务器 苹果支付_修复苹果IOS支付
- win10企业版2016长期服务激活教程
- 深入浅出内存马(一)