题目传送门

  需要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. CefGlue在WinXP下闪退的排查方法

    用CefGlue开发的程序部署到多台机器上,运行正常.本以为没有问题了,下午突然接到客户电话说:运行程序时,闪一下就退出,没有任何错误提示!远程连接到客户机器上,看了下果然如此!cef没有记录任何日志 ...

  2. vue2.0leaflet

    github源码在此,记得点星:https://github.com/brandonxiang/vueleaflet 参考文档:https://korigan.github.io/Vue2Leafle ...

  3. CSU 1859 Gone Fishing(贪心)

    Gone Fishing [题目链接]Gone Fishing [题目类型]贪心 &题解: 这题要先想到枚举走过的湖,之后才可以贪心,我就没想到这,就不知道怎么贪心 = = 之后在枚举每个湖的 ...

  4. html5-常用的通用元素

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  5. uvalive 3353 Optimal Bus Route Design

    题意: 给出n个点,以及每个点到其他点的有向距离,要求设计线路使得每一个点都在一个环中,如果设计的线路拥有最小值,那么这个线路就是可选的.输出这个最小值或者说明最小线路不存在. 思路: 在DAG的最小 ...

  6. 运用kNN算法识别潜在续费商家

    背景与目标 Youzan 是一家SAAS公司,服务于数百万商家,帮助互联网时代的生意人私有化顾客资产.拓展互联网客群.提高经营效率.现在,该公司希望能够从商家的交易数据中,挖掘出有强烈续费倾向的商家, ...

  7. Jmeter自己jar包的引用

    1.编写清空指定文件夹里所有内容的jar包 package org.na;import java.io.File;public class deletedir {    public static b ...

  8. JS-向数组指定位置添加元素

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 两眼论&矩阵变现理论结合打造赚钱大模式

    两眼论&矩阵变现理论结合打造赚钱大模式 围棋有一个基本规则,就是一块棋有两只真眼,就是活棋. 围棋没有复杂的规则,它最有趣的地方是没有太多的规则和限制,由此演变出了大千世界,所以古人云“棋如人 ...

  10. JavaScript使用localStorage缓存Js和css文件

    对于WebApp来说,将js css文件缓存到localstorage区可以减少页面在加载时与HTTP请求的交互次数,从而优化页面的加载时间.特别是当移端信号不好高延迟时优化效果还是很显见的 下面的代 ...