【笔记篇】斜率优化dp(三) APIO2010特别行动队
旁听了一波给舒老师和学弟的pkuwc面试讲座...
这里有一段隐身的吐槽, 想看的请自己想办法观看. 不想看的跳过这一段看似空白的东西就好了...
刚开始ATP学姐给我们讲了自己面试的时候的事情..描绘了一下当时面试的场面和当时问的问题..(ATP学姐太可爱了OvO)可能准备的也不是很充足 用了好多的"然后" "就是"之类的, 自己也在吐槽, 老师后来也槽来着, (不过还是超可爱n(≧▽≦)n)旁边老师在记录, 尤其记下了一个什么"你认为学习信息男生和女生有什么区别?"的问题..(可是这种问题怎么可能问男生啊讲道理), 然后学姐讲完之后就是shallwe大爷来讲, shallwe大爷还准备了稿子, 然后就讲了一些面基技巧.. 但是也是比较老生常谈的东西, 之前参加各种各样的风采大赛回答问题的时候也就是那一套之类的 小时候还能做到, 现在反而越来越不行了.. 然后讲了各种各样的问题, 说是问的问题都在blog里面.. 老师还说要blog的地址来给学弟学妹什么的(那也就是包括我们咯), 但是听完回来一看这blog里的东西能给老师看?! 各种吐槽甚至还有吐槽面试培训的.. 然后他们就回去学习了= =
老师就开始种讲评, 还让两个人分别回答了上面说的男女区别问题 然后两个都做出了比较"片面"的回答, 老师就说要往什么三个方面想之类的说了一堆, 反正就是不怼人的同时优雅地装逼的技巧, (什么在北大不说清华比北大强之类的, 说了确定不是石乐志么= =)然后再就是"你有什么缺点", 听说年年问...(大家准备好的答案都能倒着背了好么)就说要找个"不是缺点的缺点", 然后两个人都说自己比较执着啊... 就不能找点有创意的么←_←, 感觉全世界都有执着得有点傻这个缺点... 要我的话可能会说自己好奇心过强? 反正就这么着吧. 然后还有什么进门关门鞠躬瞅瞅有没有废纸倒拖把什么的... 反正就是一些鸡汤文里描写的面试的细节问题, 还有着装问题, 我觉得只要不是明显违和的穿女装应该都不是什么大问题吧←_←(对没错哪怕是可爱的男孩纸穿女装其实也是可以哒(≧▽≦)/)两个人又练了一波关门鞠躬之类的 终于煎熬地熬过去了.. 然后赶紧去了个厕所 毕竟半下午+半晚上没有去了.. 回来之后就调这个题 不过很快就调A了这还比较和善..(嗯 主要原因是这次的luogu没有出锅...)
=我=是=一=条=分=割=线=我=也=是=一=扇=传=送=门=
继续吐槽, 不过这次跟题目有关了.. 听完回来就继续写这道题啊...
这道题显然支持\(O(n)\)的做法, (感觉1e6的话套个log就不是很靠谱了)
那就是要优化, 就是要化式子嘛..然后刚开始以为这个题是
\]
然后最大化\(\sum_{i=1}^nx_i^2\)之后直接输出\(a*f[n]+b*s[n]+n*c\)的大水题,
但是发现好像样例差了好多好多...结果发现自己快读没读负数...
然后改完之后输出负数了... 手玩了一下发现好像这个\(n*c\)的\(n\)好像不一定是题目里给的\(n\)...
那就不能这么化式子了, 就开始重新化.. 还是得从状态转移方程入手...
\]
然后去括号
\]
移项能得到
\(f[j]+as[j]^2-bs[j]\)=\(2as[i]\)\(s[j]\)+\(f[i]-(as[i]^2+bs[i]+c)\)
由于题目中已经给了\(-5<a<-1\), 所以斜率一定是<0的, 而\(f[j]+as[j]^2-bs[j]\)直观上很明显是递减的. 我们考虑凸性对结果的影响.
我们考虑中间的点在位于两个斜率中间(大于大斜率小于小斜率显然不优就不考虑了)的情况.
发现如果是位于下凸壳的点是不优的, 而位于上凸壳的点是优的, 我们就要维护一个上凸壳.
而这里的斜率\(2as[i]\)显然是递减的(绝对值递增), 所以
如果一个斜率一旦已经小于(绝对值大)于队首的边, 那么队首的点在以后也不会优了 我们让队首出队即可.
依然是维护一个单调队列.
然后就没有了. 代码: 1A了哈哈哈哈 (放肆地笑ing...)
#include <cstdio>
const int N=16+6;
typedef long long LL;
LL f[N],s[N]; int q[N],h,t,a,b,c,n;
inline int gn(int a=0,char c=0,int f=1){
for(;(c<48||c>57)&&c!='-';c=getchar());if(c=='-')f=-1,c=getchar();
for(;c>='0'&&c<='9';c=getchar()) a=a*10+c-'0'; return a*f;
}
inline double slope(int x,int y){
return 1.0*(f[x]+a*s[x]*s[x]-b*s[x]-f[y]-a*s[y]*s[y]+b*s[y])/(s[x]-s[y]);
}
int main(){ n=gn(); a=gn(); b=gn(); c=gn();
for(int i=1;i<=n;++i) s[i]=s[i-1]+gn();
for(int i=1;i<=n;++i){
while(h<t&&slope(q[h],q[h+1])>=2*a*s[i]) ++h;
f[i]=f[q[h]]+a*(s[i]-s[q[h]])*(s[i]-s[q[h]])+b*(s[i]-s[q[h]])+c;
while(h<t&&slope(q[t],q[t-1])<=slope(q[t],i)) --t;
q[++t]=i;
} printf("%lld",f[n]);
}
【笔记篇】斜率优化dp(三) APIO2010特别行动队的更多相关文章
- 「学习笔记」斜率优化dp
目录 算法 例题 任务安排 题意 思路 代码 [SDOI2012]任务安排 题意 思路 代码 任务安排 再改 题意 思路 练习题 [HNOI2008]玩具装箱 思路 代码 [APIO2010]特别行动 ...
- 一本通提高篇——斜率优化DP
斜率优化DP:DP的一种优化形式,主要用于优化如下形式的DP f[i]=f[j]+x[i]*x[j]+... 学习可以参考下面的博客: https://www.cnblogs.com/Xing-Lin ...
- 学习笔记:斜率优化DP
作为数学渣,先复习一下已知两点\((x_1, y_1)\), \((x_2, y_2)\),怎么求过两点的一次函数的斜率... 待定系数法代入 \(y = kx + b\) 有: \(x_1k + b ...
- hdu3507 斜率优化学习笔记(斜率优化+dp)
QWQ菜的真实. 首先来看这个题. 很显然能得到一个朴素的\(dp\)柿子 \[dp[i]=max(dp[i],dp[j]+(sum[i]-sum[j])^2) \] 但是因为\(n\le 50000 ...
- APIO2010 特别行动队 & 斜率优化DP算法笔记
做完此题之后 自己应该算是真正理解了斜率优化DP 根据状态转移方程$f[i]=max(f[j]+ax^2+bx+c),x=sum[i]-sum[j]$ 可以变形为 $f[i]=max((a*sum[j ...
- BZOJ 1911: [Apio2010]特别行动队( dp + 斜率优化 )
sum为战斗力的前缀和 dp(x) = max( dp(p)+A*(sumx-sump)2+B*(sumx-sump)+C )(0≤p<x) 然后斜率优化...懒得写下去了... ------- ...
- [APIO2010]特别行动队 --- 斜率优化DP
[APIO2010]特别行动队 题面很直白,就不放了. 太套路了,做起来没点感觉了. \(dp(i)=dp(j)+a*(s(i)-s(j))^{2}+b*(s(i)-s(j))+c\) 直接推出一个斜 ...
- bzoj 1911 [Apio2010]特别行动队(斜率优化+DP)
1911: [Apio2010]特别行动队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 3191 Solved: 1450[Submit][Statu ...
- bzoj1911[Apio2010]特别行动队 斜率优化dp
1911: [Apio2010]特别行动队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 5057 Solved: 2492[Submit][Statu ...
- 【笔记篇】斜率优化dp(一) HNOI2008玩具装箱
斜率优化dp 本来想直接肝这玩意的结果还是被忽悠着做了两道数论 现在整天浑浑噩噩无心学习甚至都不是太想颓废是不是药丸的表现 各位要知道我就是故意要打删除线并不是因为排版错乱 反正就是一个del标签嘛并 ...
随机推荐
- Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境
目录 单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 二.orm创建表和字段 三.单表增删改查 1.增加数据 2.删除数据 3.修改数据 4.查询数据 四.在Python脚 ...
- 前端(二十一)—— vue指令:文本类指令、避免页面闪烁、v-bind指令、v-on指令、v-model指令、条件渲染指令、列表渲染指令
文本类指令.v-bind指令.v-on指令.v-model指令.条件渲染指令.列表渲染指令 一.文本操作 v-text:文本变量 <p v-text='msg'></p> &l ...
- docker 详细安装及问题排查
一.安装docker 1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看 ...
- Spring MVC源码分析(三):SpringMVC的HandlerMapping和HandlerAdapter的体系结构设计与实现
概述在我的上一篇文章:Spring源码分析(三):DispatcherServlet的设计与实现中提到,DispatcherServlet在接收到客户端请求时,会遍历DispatcherServlet ...
- 关于Swagger @ApiModel 返回内容注释不显示问题
今天做了一天@ApiModel希望Swagger生成的文档出现返回的内容注释,发现需要用到@ApiModel注解到你需要返回的类上 @ApiModelProperty作为字段的描述 例如 之后文档还 ...
- 深入vue
- css 画饼图 倒计时圆圈
html <div class="pie"></div> css .pie{ width: 200px; height: 200px; border-rad ...
- 【第二次个人作业】结对作业Core第一组:四则运算生成PB16061082+PB16120517
[整体概况] 1.描述最终的代码的实现思路以及关键代码. 2.结对作业两个人配合的过程和两个人分工. 3.API接口文档和两个组的对接. 4.效能分析,优化分析和心得体会. [代码实现] 一. 实现功 ...
- ARM TK1 安装kinect驱动
首先安装usb库 $ git clone https://github.com/libusb/libusb.git 编译libusb需要的工具 $ sudo apt-get install autoc ...
- 影响RAKsmart服务器稳定性的相关因素
RAKsmart美国服务器近年来凭借着成熟的技术和性价比吸引着广大站长,那RAKsmart服务器稳定性怎么样呢?有什么影响因素呢?下面来了解一下吧. 因素一:服务器配置 服务器能正常运营是建立在服务器 ...