题目传送门

  需要root权限的传送门

题目大意

  给定一个长度为$n$的数组,要求对每个$1 \leqslant i \leqslant n$找到最小整数的$p$,对于任意$j$满足使得$a_{i} + p - \sqrt{\left | i - j \right |} \geqslant a_{j}$。

  一来想到函数$y = \left \lceil \sqrt{x} \right \rceil$,至多有根号个取值,然后发现$O(n\sqrt{n})$会稳T。

  对于函数$y = \sqrt{x}$有一些很优美的性质,比如它的增长率不断递减(因为它的导数$y' = \frac{1}{\sqrt{x}}$,$y'$随$x$减小而减小)。

  所以对于两个决策点$i, j$,若满足$i < j$,如果它们在转移到$p_{k}$的时候$i$没有$j$优,那么$i$不会比$j$优了。

  同样的,如果$i$还是比$j$优,那么在$k$之前还是这样的。  

  因此决策点是单调的。

  所以我们可以用整体二分的写法。

  每次考虑$f[mid]$的函数值,找到它的最优决策点$pos$,那么可以确定左区间的决策点的范围,对于右区间同理。

Code

 /**
* bzoj
* Problem#2216
* Accepted
* Time: 4516ms
* Memory: 13032k
*/
#include <bits/stdc++.h>
using namespace std;
typedef bool boolean; int n;
int *csqr;
int *ar;
int *f, *g; inline void init() {
scanf("%d", &n);
csqr = new int[(n + )];
ar = new int[(n + )];
f = new int[(n + )];
g = new int[(n + )];
for (int i = ; i <= n; i++)
scanf("%d", ar + i);
} double *sqs;
void prepare() {
sqs = new double[(n + )];
sqs[] = ;
for (int i = ; i <= n; i++)
sqs[i] = sqrt(i);
} void dividing(int* f, int l, int r, int ql, int qr) {
if (l > r) return;
int mid = (l + r) >> , pos;
double mx = 0.0, cmp;
for (int i = ql; i <= qr && i <= mid; i++)
if ((cmp = ar[i] + sqs[mid - i]) > mx)
mx = cmp, pos = i;
f[mid] = ceil(mx - ar[mid]);
dividing(f, l, mid - , ql, pos);
dividing(f, mid + , r, pos, qr);
} inline void solve() {
dividing(f, , n, , n);
reverse(ar + , ar + n + );
dividing(g, , n, , n);
for (int i = ; i <= n; i++)
printf("%d\n", max(f[i], g[n - i + ]));
} int main() {
init();
prepare();
solve();
return ;
}

bzoj 2216 Lightning Conductor - 二分法 - 动态规划的更多相关文章

  1. bzoj 2216: Lightning Conductor 单调队列优化dp

    题目大意 已知一个长度为\(n\)的序列\(a_1,a_2,...,a_n\)对于每个\(1\leq i\leq n\),找到最小的非负整数\(p\)满足: 对于任意的\(j\), \(a_j \le ...

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

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

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

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

  4. 【bzoj2216】[Poi2011]Lightning Conductor 1D1D动态规划优化

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

  5. [bzoj 2216] [Poi2011] Lightning Conductor

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

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

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

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

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

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

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

  9. 【BZOJ 2216】【POI 2011】Lightning Conductor

    http://www.lydsy.com/JudgeOnline/problem.php?id=2216 学习了一下决策单调性. 这道题决策单调性比较明显,不详细证了. 对于一个决策i,如果在i之前的 ...

随机推荐

  1. sqlmap常用技巧整理

    言 通过在乌云网上出现的很多SQL注入漏洞,因此来总结一下,大致使用SQLMAP所遇到的参数. 基本结构 基本SQLMAP的使用方式就如下所示,使用参数式的方式,按需求添加. 12 sqlmap.py ...

  2. (4)Python3笔记 之 流程控制

    一.条件控制 # 语法规则 if 变量(或表达式): 语句块1 elif 变量(或表达式): 语句块2 else: 语句块3 #示例 score = 83 if score > 90: prin ...

  3. 解决session只能被一个浏览器访问的问题

    做购物车的时候,我们都知道购买的东西会保存到session中,但是光这样简单的保存起来就会带来一个问题,只能呢被同一个浏览器访问到,如果用户使用不同的浏览器进行访问网页的话肯定是会出问题的.下面就来针 ...

  4. hbase-java-api002(flush)

    package api; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apa ...

  5. js控制元素隐藏和显示

    原生: 方法一: document.getElementById("idname").style.visibility="hidden"; document.g ...

  6. java中,null值可以被强制转换为任何类型

    java中,null值可以被强制转换为任何类型

  7. kali漏洞扫描

    nmap (apt-get install nmap)          nmap从初级到高级 ------------------------------ Nessus (dpkg -i Nessu ...

  8. base_review

    简述Python的字符串驻留机制. - 字符串驻留是一种仅保存一份相同且不可变字符串的方法. - 原理 - 系统维护interned字典,记录已被驻留的字符串对象. - 当字符串对象a需要驻留时,先在 ...

  9. Spring boot 问题总结

    1. Spring boot 嵌入的tomcat不能启动: Unregistering JMX-exposed beans on shutdown   在官网(http://start.spring. ...

  10. Codeforce 835A - Key races

    Two boys decided to compete in text typing on the site "Key races". During the competition ...