题意

给一个长度为\(n\)的序列\(a_i\),对于每个\(1 \le i \le n\),找到最小的非负整数\(p\)满足 对于任意的\(j\), \(a_j \le a_i + p - \sqrt{|i-j|}\)

分析

我们正反dp一下。

题解

令\(d(i)\)表示最小的\(p\),则\(d(i) = max(a_j+\sqrt{i-j})-a_i, j < i\)。

其实发现这是有决策单调性的。即对于决策\(j\)和\(k(j > k)\),如果\(j\)在\(i\)时比\(k\)在\(i\)优了,则对于所有\(x > i\),决策\(j\)都比决策\(k\)优。所以我们用一个栈来维护一下最优区间即可,更新区间用二分,复杂度\(O(nlogn)\)。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef double lf;
  4. inline int getint() {
  5. int x=0, c=getchar();
  6. for(; c<48||c>57; c=getchar());
  7. for(; c>47&&c<58; x=x*10+c-48, c=getchar());
  8. return x;
  9. }
  10. const int N=500005;
  11. struct ip {
  12. int id, l, r;
  13. }q[N];
  14. int n, a[N];
  15. inline lf cal(int j, int i) {
  16. return a[j]-a[i]+sqrt(i-j);
  17. }
  18. void dp(lf *f) {
  19. ip *fr=q, *ta=q;
  20. *ta++=(ip){1, 2, n};
  21. for(int i=2; i<=n; ++i) {
  22. for(; fr+1!=ta && (fr+1)->l<=i; ++fr);
  23. f[i]=cal(fr->id, i);
  24. ++fr->l;
  25. for(; fr!=ta && fr->l>fr->r; ++fr);
  26. for(; fr!=ta && cal((ta-1)->id, (ta-1)->l)<cal(i, (ta-1)->l); --ta);
  27. if(fr!=ta) {
  28. ip *b=ta-1;
  29. int l=b->l, r=b->r;
  30. while(l<=r) {
  31. int mid=(l+r)>>1;
  32. if(cal(b->id, mid)<cal(i, mid)) {
  33. r=mid-1;
  34. }
  35. else {
  36. l=mid+1;
  37. }
  38. }
  39. ++r;
  40. if(r<=n) {
  41. b->r=r-1;
  42. *ta++=(ip){i, r, n};
  43. }
  44. }
  45. else {
  46. *ta++=(ip){i, i+1, n};
  47. }
  48. }
  49. }
  50. lf f[N], g[N];
  51. int main() {
  52. n=getint();
  53. for(int i=1; i<=n; ++i) {
  54. a[i]=getint();
  55. }
  56. dp(f);
  57. reverse(a+1, a+1+n);
  58. dp(g);
  59. for(int i=1; i<=n; ++i) {
  60. printf("%d\n", max(0, int(ceil(max(f[i], g[n-i+1])))));
  61. }
  62. return 0;
  63. }

【BZOJ】2216: [Poi2011]Lightning Conductor的更多相关文章

  1. [bzoj 2216] [Poi2011] Lightning Conductor

    [bzoj 2216] [Poi2011] Lightning Conductor Description 已知一个长度为n的序列a1,a2,-,an. 对于每个1<=i<=n,找到最小的 ...

  2. bzoj 2216: [Poi2011]Lightning Conductor【决策单调性dp+分治】

    参考:https://blog.csdn.net/clove_unique/article/details/57405845 死活不过样例看了题解才发现要用double.... \[ a_j \leq ...

  3. bzoj 2216 [Poi2011]Lightning Conductor——单调队列+二分处理决策单调性

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2216 那个关于位置的代价是带根号的,所以随着距离的增加而增长变慢:所以靠后的位置一旦比靠前的 ...

  4. 【BZOJ】2277: [Poi2011]Strongbox

    题意 有一个密码箱,\(0\)到\(n-1\)中的某些整数是它的密码.如果\(a\)和\(b\)都是它的密码,那么\((a+b)%n\)也是它的密码(\(a,b\)可以相等).某人试了\(k\)次密码 ...

  5. 【BZOJ】2212: [Poi2011]Tree Rotations

    题意 给一棵\(n(1 \le n \le 200000)\)个叶子的二叉树,可以交换每个点的左右子树,要求前序遍历叶子的逆序对最少. 分析 可以发现如果交换非叶结点的左右子树,对子树内的交换无影响, ...

  6. 【BZOJ2216】[Poi2011]Lightning Conductor 决策单调性

    [BZOJ2216][Poi2011]Lightning Conductor Description 已知一个长度为n的序列a1,a2,...,an.对于每个1<=i<=n,找到最小的非负 ...

  7. 【BZOJ】【2738】&【Tsinsen】【A1333】矩阵乘法

    整体二分+树状数组 过了[BZOJ][2527][POI2011]Meteors以后这题就没那么难啦~ 关键是[从小到大]依次插入数字,然后整体二分每个查询的第k大是在第几次插入中被插入的……嗯大概就 ...

  8. 【BZOJ】3052: [wc2013]糖果公园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题意:n个带颜色的点(m种),q次询问,每次询问x到y的路径上sum{w[次数]*v[颜色]} ...

  9. 【BZOJ】3319: 黑白树

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...

随机推荐

  1. Install PIL on mac osX10.9

    follow this instruction: http://blog.csdn.net/liushuaikobe/article/details/8729652 and if you encoun ...

  2. C# 将文件转化成byte[]数组

    /// <summary> /// 将文件转换成byte[] 数组 /// </summary> /// <param name="fileUrl"& ...

  3. 攻城狮在路上(叁)Linux(十九)--- 磁盘分区

    磁盘分区使用fdisk命令,该命令仅root有使用权限. 磁盘分区的一般步骤: 1.首先用df命令查看设备名 df -h; 2.fdisk /dev/sda; <== 按m显示help d:删除 ...

  4. Oracle备份 还原命令

    1.备份命令 exp username/password file=d:/test/test.dmp; 2.还原命令 imp username/password full=y file=d:/test ...

  5. hdu 3236 二维背包

    明天来一发 hdu 4501  算是这题的简化版吧

  6. 避免在ASP.NET Core中使用服务定位器模式

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:服务定位器(Service Locator)作为一种反模式,一般情况下应该避免使用,在 ...

  7. ASP.NET的新成员ASP.NET WebHooks

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:前几天微软除了发布了ASP.NET 5的Beta7之外,还有一个值得关注的东西,就是A ...

  8. WebRTC之带宽控制部分学习(1) ------基本demo的介绍

    转自:http://blog.csdn.net/u013160228/article/details/46392037 WebRTC的代码真是非常之大啊,下载以及编译了我好几天才搞完..... 可以看 ...

  9. LaTex学习笔记(一)

    1. 语法 命令 普通命令 环境 数据 注释 2. 物理结构 导言 指定文档类型,引入宏包,定义命令,环境等 \documentclass[options]{class} \usepackage[op ...

  10. js jquery 实现点击按钮后,倒计时60秒才能再次点击发送验证邮件

    <input type="button" id="btn" value="免费获取验证码" /><script type= ...