原来决策单调性指的是这个东西...

一些DP可以写成$f_i=\max\limits_{j\lt i}g(i,j)$,设$p_i(p_i<j)$表示使得$g(i,j)$最大的$j$,如果$p_1\leq\cdots\leq p_n$,那么我们称这个DP满足决策单调性,称$p_i$为$i$的最优决策点

决策单调性可以用整体二分来做,设当前要处理$f_{l\cdots r}$且最优决策点的范围是$[h,t]$,那么我们先求出$f_{mid}$,这个直接暴力从$\left[h,\min(mid,t)\right]$转移即可,假设$mid$的最优决策点是$d$,那么我们可以递归做$(l,mid-1,h,d)$和$(mid+1,r,d,t)$,二分总共$O(\log_2n)$层,每一层最多$O(n)$,总时间复杂度$O\left(n\log_2n\right)$

这题的DP方程是$f_i=\max\{a_j+\sqrt{\left|i-j\right|}\}-a_i$,为了把绝对值去掉,我们作限制$j\lt i$,正反各做一遍取最大值即可

$f_i=\max\limits_{j\lt i}\{a_j+\sqrt{i-j}\}-a_i$

设$i$的最优决策点为$p$,那么对于$\forall k\lt p$有$a_k+\sqrt{i-k}\leq a_p+\sqrt{i-p}$

因为$\sqrt{x+1}-\sqrt x$是单调递减的,所以$\sqrt{i+1-k}-\sqrt{i-k}\leq\sqrt{i+1-p}-\sqrt{i-p}$

把它加到上面,我们得到$a_k+\sqrt{i+1-k}\leq a_p+\sqrt{i+1-p}$

这也就说明了$i+1$的最优决策点$\geq p$,也就是说这个DP满足决策单调性

#include<stdio.h>
#include<math.h>
typedef double du;
du max(du a,du b){return ceil(a>b?a:b);}
void swap(int&a,int&b){
	int c=a;
	a=b;
	b=c;
}
int a[500010];
void solve(du*f,int l,int r,int h,int t){
	if(l>r||h>t)return;
	int mid,i,d;
	du res=-2147483647.;
	mid=(l+r)>>1;
	for(i=h;i<=t&&i<=mid;i++){
		if(a[i]+sqrt(mid-i)>res){
			res=a[i]+sqrt(mid-i);
			d=i;
		}
	}
	f[mid]=res-a[mid];
	solve(f,l,mid-1,h,d);
	solve(f,mid+1,r,d,t);
}
du f[500010],g[500010];
int main(){
	int n,i;
	scanf("%d",&n);
	for(i=1;i<=n;i++)scanf("%d",a+i);
	solve(f,1,n,1,n);
	for(i=1;i<=n>>1;i++)swap(a[i],a[n-i+1]);
	solve(g,1,n,1,n);
	for(i=1;i<=n;i++)printf("%.0lf\n",max(f[i],g[n-i+1]));
}

[BZOJ2216]Lightning Conductor的更多相关文章

  1. 【BZOJ2216】Lightning Conductor(动态规划)

    [BZOJ2216]Lightning Conductor(动态规划) 题面 BZOJ,然而是权限题 洛谷 题解 \(\sqrt {|i-j|}\)似乎没什么意义,只需要从前往后做一次再从后往前做一次 ...

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

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

  3. [bzoj 2216] [Poi2011] Lightning Conductor

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

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

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

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

    题目链接 BZOJ2216 题解 学过高中数学都应知道,我们要求\(p\)的极值,参变分离为 \[h_j + sqrt{|i - j|} - h_i \le p\] 实际上就是求\(h_j + sqr ...

  6. BZOJ2216 : [Poi2011]Lightning Conductor

    $f[i]=\max(a[j]+\lceil\sqrt{|i-j|}\rceil)$, 拆开绝对值,考虑j<i,则决策具有单调性,j>i同理, 所以可以用分治$O(n\log n)$解决. ...

  7. BZOJ2216 Poi2011 Lightning Conductor 【决策单调性优化DP】

    Description 已知一个长度为n的序列a1,a2,...,an. 对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt( ...

  8. bzoj2216: [Poi2011]Lightning Conductor(分治决策单调性优化)

    每个pi要求 这个只需要正反DP(?)一次就行了,可以发现这个是有决策单调性的,用分治优化 #include<iostream> #include<cstring> #incl ...

  9. BZOJ2216: [Poi2011]Lightning Conductor(DP 决策单调性)

    题意 题目链接 Sol 很nice的决策单调性题目 首先把给出的式子移项,我们要求的$P_i = max(a_j + \sqrt{|i - j|}) - a_i$. 按套路把绝对值拆掉,$p_i = ...

随机推荐

  1. shellcheck 帮助你写出更好的脚本

    简介 shellcheck 是一款实用的 shell脚本静态检查工具. 首先,可以帮助你提前发现并修复简单的语法错误,节约时间.每次都需要运行才发现写错了一个小地方,确实非常浪费时间. 其次,可以针对 ...

  2. System V共享内存介绍

    (一)简单概念 共享内存作为一种进程间通信的方式,其相较于其他进程间通信方式而言最大的优点就是数据传输速率快.其内部实现的方式采用了Linux进程地址空间中的mmap文件映射区,将文件内容直接映射到各 ...

  3. linux 自旋锁和信号量【转】

    转自:http://blog.csdn.net/xu_guo/article/details/6072823 版权声明:本文为博主原创文章,未经博主允许不得转载. 自旋锁最多只能被一个可执行线程持有( ...

  4. 打印 pmic register value

    打印 PMIC register value 方式有二種, 一種是使用 adb shell cat pmic register 一種是直接在 code 裡 call dump pmic registe ...

  5. 构造函数、原型对象prototype、实例、隐式原型__proto__的理解

    (欢迎一起探讨,如果有什么地方写的不准确或是不正确也欢迎大家指出来~) PS: 内容中的__proto__可能会被markdown语法导致显示为proto. 建议将构造函数中的方法都定义到构造函数的原 ...

  6. mysql数据库隔离级别

    # 原创,转载请留言联系 事务的隔离级别 (由高到低)1.串行化(serializable):一个事务一个事务的执行2.可重复读(Repeatable-Read) 可重复读,无论其他事务是否修改并提交 ...

  7. 算法入门系列1:k-means

    k-means是一种无监督学习算法,用于聚类. 下图(来自http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html)展示了k-m ...

  8. linux命令(23):cp命令

    实例一:复制单个文件到目标目录 cp 1.log /home 说明: 1.在没有带-a参数时,两个文件的时间是不一样的.在带了-a参数时,两个文件的时间是一致的. 2.当目标文件已存在,会询问是否覆盖 ...

  9. linux系统下部署war包

    http://blog.csdn.net/hellowangchaochao/article/details/73223773

  10. http跟https的区别

    http: Hypertext transform protocol 超文本传输协议 是一个为了传输超媒体文档(比如html)的应用层协议 是为了web的浏览器跟web的server端的交流而设计的, ...