旁听了一波给舒老师和学弟的pkuwc面试讲座...

这里有一段隐身的吐槽, 想看的请自己想办法观看. 不想看的跳过这一段看似空白的东西就好了...



刚开始ATP学姐给我们讲了自己面试的时候的事情..描绘了一下当时面试的场面和当时问的问题..(ATP学姐太可爱了OvO)可能准备的也不是很充足 用了好多的"然后" "就是"之类的, 自己也在吐槽, 老师后来也槽来着, (不过还是超可爱n(≧▽≦)n)旁边老师在记录, 尤其记下了一个什么"你认为学习信息男生和女生有什么区别?"的问题..(可是这种问题怎么可能问男生啊讲道理), 然后学姐讲完之后就是shallwe大爷来讲, shallwe大爷还准备了稿子, 然后就讲了一些面基技巧.. 但是也是比较老生常谈的东西, 之前参加各种各样的风采大赛回答问题的时候也就是那一套之类的 小时候还能做到, 现在反而越来越不行了.. 然后讲了各种各样的问题, 说是问的问题都在blog里面.. 老师还说要blog的地址来给学弟学妹什么的(那也就是包括我们咯), 但是听完回来一看这blog里的东西能给老师看?! 各种吐槽甚至还有吐槽面试培训的.. 然后他们就回去学习了= =

老师就开始种讲评, 还让两个人分别回答了上面说的男女区别问题 然后两个都做出了比较"片面"的回答, 老师就说要往什么三个方面想之类的说了一堆, 反正就是不怼人的同时优雅地装逼的技巧, (什么在北大不说清华比北大强之类的, 说了确定不是石乐志么= =)然后再就是"你有什么缺点", 听说年年问...(大家准备好的答案都能倒着背了好么)就说要找个"不是缺点的缺点", 然后两个人都说自己比较执着啊... 就不能找点有创意的么←_←, 感觉全世界都有执着得有点傻这个缺点... 要我的话可能会说自己好奇心过强? 反正就这么着吧. 然后还有什么进门关门鞠躬瞅瞅有没有废纸倒拖把什么的... 反正就是一些鸡汤文里描写的面试的细节问题, 还有着装问题, 我觉得只要不是明显违和的穿女装应该都不是什么大问题吧←_←(对没错哪怕是可爱的男孩纸穿女装其实也是可以哒(≧▽≦)/)两个人又练了一波关门鞠躬之类的 终于煎熬地熬过去了.. 然后赶紧去了个厕所 毕竟半下午+半晚上没有去了.. 回来之后就调这个题 不过很快就调A了这还比较和善..(嗯 主要原因是这次的luogu没有出锅...)

=我=是=一=条=分=割=线=我=也=是=一=扇=传=送=门=

继续吐槽, 不过这次跟题目有关了.. 听完回来就继续写这道题啊...

这道题显然支持\(O(n)\)的做法, (感觉1e6的话套个log就不是很靠谱了)

那就是要优化, 就是要化式子嘛..然后刚开始以为这个题是

\[\sum_{i=1}^n(ax_i^2+bx_i+c)=a\sum_{i=1}^nx_i^2+bs_n+n*c
\]

然后最大化\(\sum_{i=1}^nx_i^2\)之后直接输出\(a*f[n]+b*s[n]+n*c\)的大水题,

但是发现好像样例差了好多好多...结果发现自己快读没读负数...

然后改完之后输出负数了... 手玩了一下发现好像这个\(n*c\)的\(n\)好像不一定是题目里给的\(n\)...

那就不能这么化式子了, 就开始重新化.. 还是得从状态转移方程入手...

\[f[i]=max\{f[j]+a(s[i]-s[j])^2+b(s[i]-s[j])+c\}(j\in[1,i))
\]

然后去括号

\[f[i]=f[j]+as[i]^2-2as[i]s[j]+as[j]^2+bs[i]-bs[j]+c
\]

移项能得到

\(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特别行动队的更多相关文章

  1. 「学习笔记」斜率优化dp

    目录 算法 例题 任务安排 题意 思路 代码 [SDOI2012]任务安排 题意 思路 代码 任务安排 再改 题意 思路 练习题 [HNOI2008]玩具装箱 思路 代码 [APIO2010]特别行动 ...

  2. 一本通提高篇——斜率优化DP

    斜率优化DP:DP的一种优化形式,主要用于优化如下形式的DP f[i]=f[j]+x[i]*x[j]+... 学习可以参考下面的博客: https://www.cnblogs.com/Xing-Lin ...

  3. 学习笔记:斜率优化DP

    作为数学渣,先复习一下已知两点\((x_1, y_1)\), \((x_2, y_2)\),怎么求过两点的一次函数的斜率... 待定系数法代入 \(y = kx + b\) 有: \(x_1k + b ...

  4. hdu3507 斜率优化学习笔记(斜率优化+dp)

    QWQ菜的真实. 首先来看这个题. 很显然能得到一个朴素的\(dp\)柿子 \[dp[i]=max(dp[i],dp[j]+(sum[i]-sum[j])^2) \] 但是因为\(n\le 50000 ...

  5. APIO2010 特别行动队 & 斜率优化DP算法笔记

    做完此题之后 自己应该算是真正理解了斜率优化DP 根据状态转移方程$f[i]=max(f[j]+ax^2+bx+c),x=sum[i]-sum[j]$ 可以变形为 $f[i]=max((a*sum[j ...

  6. BZOJ 1911: [Apio2010]特别行动队( dp + 斜率优化 )

    sum为战斗力的前缀和 dp(x) = max( dp(p)+A*(sumx-sump)2+B*(sumx-sump)+C )(0≤p<x) 然后斜率优化...懒得写下去了... ------- ...

  7. [APIO2010]特别行动队 --- 斜率优化DP

    [APIO2010]特别行动队 题面很直白,就不放了. 太套路了,做起来没点感觉了. \(dp(i)=dp(j)+a*(s(i)-s(j))^{2}+b*(s(i)-s(j))+c\) 直接推出一个斜 ...

  8. bzoj 1911 [Apio2010]特别行动队(斜率优化+DP)

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 3191  Solved: 1450[Submit][Statu ...

  9. bzoj1911[Apio2010]特别行动队 斜率优化dp

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 5057  Solved: 2492[Submit][Statu ...

  10. 【笔记篇】斜率优化dp(一) HNOI2008玩具装箱

    斜率优化dp 本来想直接肝这玩意的结果还是被忽悠着做了两道数论 现在整天浑浑噩噩无心学习甚至都不是太想颓废是不是药丸的表现 各位要知道我就是故意要打删除线并不是因为排版错乱 反正就是一个del标签嘛并 ...

随机推荐

  1. 【Stanford Machine Learning Open Course】学习笔记目录

    这里是斯坦福大学机器学习网络课程的学习笔记. 课程地址是:https://class.coursera.org/ml-2012-002/lecture/index 课程资料百度网盘分享链接:https ...

  2. Java标准输入/输出/错误流

    只要使用OutputStream对象就可使用System.out和System.err对象引用.只要可以使用InputStream对象就可以使用System.in对象. System类提供了三个静态设 ...

  3. <爬虫>相关的知识

    1.概念.工具和HTTP 什么是爬虫 模拟客户端发送网络请求,获取响应,按照规则提取数据 爬虫的数据去哪了 展示到网页上(百度新闻,今日头条) 进行分析,从数据中寻找规律(指数网站:百度指数) 需要的 ...

  4. CSIC_716_20191203【 socket网络编程,以及沾包问题的高级解决方式】

    AF_UNIX(本机通信) AF_INET(TCP/IP – IPv4) AF_INET6(TCP/IP – IPv6) SOCK_STREAM(TCP流) SOCK_DGRAM(UDP数据报) 远程 ...

  5. nacos注册中心配置命名服务不生效问题

    nacos作为注册中心指定命名空间,配置如下: 但是启动之后发现服务都默认注册到了public这个命名空间下面,也就是指定的命名空间不生效 这是因为注册中心使用的命名空间的配置不是nacos.conf ...

  6. django 模型ManyToMany 关联的添加,删除,查询

    models.py文件内容: from django.db import models class person(models.Model): name = CharField(max_length= ...

  7. 面向对象oop 和类

    面向对象与面向过程的区别 面向对象:面向对象的思维模式说白了就是分类思维模式.思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考.最后,才对某个分类下的细节进行面向过程的思索 自我理解(领 ...

  8. JAVA Java中@Override的作用

    @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1.可以当注释用,方便阅读: 2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.例 ...

  9. IDEA使用的JDK版本1.9换成1.8后,在IDEA中需要改的配置

    今天上午上课spring5使用注解方式的时候,发现jdk9不兼容,果断换jdk8 步骤如下 一.查看Project中的jdk 1.检查Project SDK:中jdk 版本是否为1.8版本 2.检查P ...

  10. bzoj1061题解

    [解题思路] 设类型i的志愿者,即第Si天~第Ti天工作的志愿者,共招募xi个,于是有不等式组Σxj≥Ai(Sj≤i≤Tj). 这样,题目就变成了求一组满足一次不等式组的xi,使ΣCixi最小,即标准 ...