题意

已知一个长度为n的序列a1,a2,...,an。

对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt(abs(i-j))

题解

决策单调性是个好东西

等学会了再滚回来填坑

  1. //minamoto
  2. #include<iostream>
  3. #include<cstdio>
  4. #include<cmath>
  5. using namespace std;
  6. #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
  7. char buf[<<],*p1=buf,*p2=buf;
  8. template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,:;}
  9. inline int read(){
  10. #define num ch-'0'
  11. char ch;bool flag=;int res;
  12. while(!isdigit(ch=getc()))
  13. (ch=='-')&&(flag=true);
  14. for(res=num;isdigit(ch=getc());res=res*+num);
  15. (flag)&&(res=-res);
  16. #undef num
  17. return res;
  18. }
  19. char sr[<<],z[];int C=-,Z;
  20. inline void Ot(){fwrite(sr,,C+,stdout),C=-;}
  21. inline void print(int x){
  22. if(C><<)Ot();if(x<)sr[++C]=,x=-x;
  23. while(z[++Z]=x%+,x/=);
  24. while(sr[++C]=z[Z],--Z);sr[++C]='\n';
  25. }
  26. const int N=5e5+;
  27. int n,q[N],k[N],a[N];
  28. double p[N];
  29. inline double calc(int i,int j){return a[j]+sqrt(i-j);}
  30. inline int bound(int x,int y){
  31. int l=,r=n,mid,res=r+;
  32. while(l<=r){
  33. mid=l+r>>;
  34. if(calc(mid,x)<=calc(mid,y)) res=mid,r=mid-;
  35. else l=mid+;
  36. }
  37. return res;
  38. }
  39. void work(){
  40. for(int i=,h=,t=;i<=n;++i){
  41. while(h<t&&k[t-]>=bound(q[t],i)) --t;
  42. k[t]=bound(q[t],i),q[++t]=i;
  43. while(h<t&&k[h]<=i) ++h;
  44. cmax(p[i],calc(i,q[h]));
  45. }
  46. }
  47. int main(){
  48. //freopen("testdata.in","r",stdin);
  49. n=read();
  50. for(int i=;i<=n;++i) a[i]=read();
  51. work();
  52. for(int i=;i<=n+-i;++i)
  53. swap(a[i],a[n-i+]),swap(p[i],p[n-i+]);
  54. work();
  55. for(int i=n;i;--i) print(ceil(p[i])-a[i]);
  56. Ot();
  57. return ;
  58. }

洛谷P3515 [POI2011]Lightning Conductor(决策单调性)的更多相关文章

  1. 洛谷P3515 [POI2011]Lightning Conductor(动态规划,决策单调性,单调队列)

    洛谷题目传送门 疯狂%%%几个月前就秒了此题的Tyher巨佬 借着这题总结一下决策单调性优化DP吧.蒟蒻觉得用数形结合的思想能够轻松地理解它. 首先,题目要我们求所有的\(p_i\),那么把式子变一下 ...

  2. P3515 [POI2011]Lightning Conductor[决策单调性优化]

    给定一序列,求对于每一个$a_i$的最小非负整数$p_i$,使得$\forall j \neq i $有$ p_i>=a_j-a_i+ \sqrt{|i-j|}$. 绝对值很烦 ,先分左右情况单 ...

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

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

  4. LOJ2074/2157 JSOI2016/POI2011 Lightning Conductor 决策单调性DP

    传送门 我们相当于要求出\(f_i = \max\limits_{j=1}^{n} (a_j + \sqrt{|i-j|})\).这个绝对值太烦人了,考虑对于\(i>j\)和\(i<j\) ...

  5. P3515 [POI2011]Lightning Conductor(决策单调性分治)

    P3515 [POI2011]Lightning Conductor 式子可转化为:$p>=a_j-a_i+sqrt(i-j) (j<i)$ $j>i$的情况,把上式翻转即可得到 下 ...

  6. BZOJ_2216_[Poi2011]Lightning Conductor_决策单调性

    BZOJ_2216_[Poi2011]Lightning Conductor_决策单调性 Description 已知一个长度为n的序列a1,a2,...,an. 对于每个1<=i<=n, ...

  7. 洛谷 P3515 [ POI 2011 ] Lightning Conductor —— 决策单调性DP

    题目:https://www.luogu.org/problemnew/show/P3515 决策单调性... 参考TJ:https://www.cnblogs.com/CQzhangyu/p/725 ...

  8. P3515 [POI2011]Lightning Conductor

    首先进行一步转化 $a_j \leq a_i + q - sqrt(abs(i - j))$ $a_i + q \geq a_j + sqrt(abs(i-j))$ 即 $q = max (a_j + ...

  9. 洛谷 P5897 - [IOI2013]wombats(决策单调性优化 dp+线段树分块)

    题面传送门 首先注意到这次行数与列数不同阶,列数只有 \(200\),而行数高达 \(5000\),因此可以考虑以行为下标建线段树,线段树上每个区间 \([l,r]\) 开一个 \(200\times ...

随机推荐

  1. (转)C# 特性(Attribute)详细介绍

    本文转载自:http://www.cnblogs.com/luckdv/articles/1682488.html 1.什么是Atrribute 首先,我们肯定Attribute是一个类,下面是msd ...

  2. 线程及同步的性能 – 线程池/ ThreadPoolExecutors/ ForkJoinPool

    线程池和ThreadPoolExecutors 虽然在程序中可以直接使用Thread类型来进行线程操作,但是更多的情况是使用线程池,尤其是在Java EE应用服务器中,一般会使用若干个线程池来处理来自 ...

  3. 带坑的几道PHP面试题

    第二题 代码如下: $i='11'; printf("%d\n",printf("%d",printf("%d",$i))); 输出结果是多 ...

  4. jackson 进行json与java对象转换 之三

    2.测试类,没用Junit,用Main()方法输出. package test; import java.io.IOException; import java.util.ArrayList; imp ...

  5. 一个hitbernate配置文件,带几个表(注意mapping);如果连接字符串没有设置utf-8,向insert mysql 会产生乱码(utf8 或 utf-8)

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuratio ...

  6. 前端JS面试题

    题目如下: function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function ( ...

  7. android viewpage解决嵌套

    子viewpage 自定义 写法一: public class ChildViewPager extends ViewPager{ /** 触摸时按下的点 **/ PointF downP = new ...

  8. day70 12-存储过程和存储函数

    什么是相关子查询? 这是一个子查询,子查询本身又是一个多表查询.where不能用组函数,但是可以用字符函数instr().除了order by排序没有考,查询语句的所有内容都考了.这个题有点难度. 今 ...

  9. 在PHP中PDO解决中文乱码问题的一些补充

    我的环境是appsver包, 在网上最常出现的解决中文乱码显示的代码是: 第一种:PDO::__construct($dsn, $user, $pass, array (PDO::MYSQL_ATTR ...

  10. (转载)Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderListener

    转载自:http://www.cnblogs.com/love540376/p/5527757.html Eclipse中tomcat部署工程启动后报错: 严重: Error configuring  ...