正题

题目链接:https://www.luogu.com.cn/problem/P3507


题目大意

nnn个数字的一个序列aaa,对于每个位置iii求一个pip_ipi​使得对于任意jjj满足
pi+ai−∣i−j∣≥pjp_i+a_i-\sqrt{|i-j|}\geq p_jpi​+ai​−∣i−j∣​≥pj​


解题思路

化简一下发现我们是需要求出max{∣i−j∣+pj}max\{\sqrt{|i-j|}+p_j\}max{∣i−j∣​+pj​}

分成两次去掉绝对值。
因为这个根号的性质是增长的越来越小,那么对于一个位置iii若它的maxmaxmax值位置为jjj,那么i+1i+1i+1就一定不小于jjj。

利用这个单调性来优化,我们每次直接对于区间正中间midmidmid暴力求出它的答案pospospos,那么[l,mid−1][l,mid-1][l,mid−1]的答案就在[L,pos][L,pos][L,pos],而[mid+1,r][mid+1,r][mid+1,r]的答案就在[pos,R][pos,R][pos,R]。

然后递归下去就好了。时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<stack>
#define ll long long
using namespace std;
const ll N=5e5+10;
ll n;double a[N],f[N],sqr[N];
stack<ll> s;
double count(ll i,ll j)
{return a[j]+sqr[abs(j-i)];}
void CDQ(ll l,ll r,ll L,ll R){if(l>r)return;ll mid=(l+r)>>1,pos=L;double tmp=count(mid,L);for(int i=L+1;i<=R&&i<=mid;i++)if(count(mid,i)>tmp)pos=i,tmp=count(mid,i);f[mid]=max(tmp,f[mid]);CDQ(l,mid-1,L,pos);CDQ(mid+1,r,pos,R);return;
}
signed main()
{scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lf",&a[n-i+1]);sqr[i]=sqrt((double)i);}CDQ(1,n,1,n);for(ll i=1;n-i+1>i;i++)swap(a[i],a[n-i+1]),swap(f[i],f[n-i+1]);CDQ(1,n,1,n);for(ll i=1;i<=n;i++)printf("%lld\n",(ll)ceil(f[i]-a[i]));return 0;
}

P3515-[POI2011]Lightning Conductor【整体二分,决策单调性】相关推荐

  1. bzoj 2216: [Poi2011]Lightning Conductor(DP决策单调性)

    2216: [Poi2011]Lightning Conductor Time Limit: 25 Sec  Memory Limit: 64 MB Submit: 1292  Solved: 443 ...

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

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

  3. BZOJ2216: [Poi2011]Lightning Conductor

    第一道此类的题,所以这是一篇假的博客,定理不会证明不理性 也不一定对 我是从这篇博客看的 = = 很显然是让你求 p[i] = max{a[j] + sqrt(i - j)} - a[i] 就是 ma ...

  4. BZOJ 2216 Poi2011 Lightning Conductor 动态规划

    题目大意:给定一个序列aia_i,对于每一个ii求⌈max{aj+|i−j|−−−−−√}−ai⌉\lceil max\{ a_j+\sqrt{|i-j|}\}-a_i\rceil 看了题解才知道是决 ...

  5. [BZOJ2216][Poi2011]Lightning Conductor[决策单调性优化]

    最初在HDU的ACM模板上看到这个分治的DP优化 用这个的前提是不强制在线(f[i]不由前面的f转移过来)且决策单调 \[ \forall j\in \left[ \text{1,}n \right] ...

  6. BZOJ.2161. 布娃娃【整体二分】

    传送门 NNN 个区间记为 [l,r][l,r][l,r]形式,魅力值,记为CiC_iCi​形式 NNN 个耐力值,记为 PiP_iPi​形式 求覆盖PiP_iPi​的区间内,魅力值第iii大是多少 ...

  7. luogu p3515 Lightning Conductor

    luogu p3515 Lightning Conductor 给定一个长度为n的序列,对于每一个i∈[1,n]i∈[1,n]i∈[1,n],求出一个最小的非负整数p,使得对于所有的j∈[1,n]j∈ ...

  8. [bzoj2527][Poi2011]Meteors_整体二分_树状数组

    Meteors bzoj-2527 Poi-2011 题目大意:题目链接. 注释:略. 想法: 首先答案可以离线,且具有单调性. 这里的单调性就是随着时间的推移,每个国家收集的陨石数增加. 不难想到整 ...

  9. Codeforces Round #190 (Div. 1): E. Ciel and Gondolas(决策单调性DP+wqs二分)

    E. Ciel and Gondolas 题意: bzoj5311:https://www.lydsy.com/JudgeOnline/problem.php?id=5311 同一道题目,但是bzoj ...

最新文章

  1. C++实现十大排序算法(冒泡,选择,插入,归并,快速,堆,希尔,桶,计数,基数)排序算法时间复杂度、空间复杂度、稳定性比较(面试经验总结)
  2. 拥抱iPhone,拥抱软件开发的未来
  3. java 接口的作用和好处
  4. ffplay播放没有声音SDL_OpenAudio (2 channels, 44100 Hz): WASAPI can't initialize audio client
  5. php round half even,PHP round( )用法及代碼示例
  6. 足球点球 html5,身为西甲第一点球手,C罗只有5次让点经历,难怪点球破门过百...
  7. 根据年月日计算是星期几的函数,基姆拉尔森计算公式
  8. Portainer简介及部署
  9. 26 fps 的视频超分辨率模型 DAP!在线输出720P视频
  10. jsp input maxlength无效_出现这3个现象, 说明你的孩子在无效学习! 家长们: 原来如此...
  11. Android 判断wifi是2.4GHz还是5GHz
  12. html制作翻牌游戏,基于javascript实现句子翻牌网页版小游戏
  13. 挖数据平台推出实时汇率API接口
  14. php读取本地txt,php读取本地文件常用函数(fopen与file_get_contents)_PHP教程
  15. 浏览器主页被篡改为hao123、360和2345解决办法
  16. cent ultraiso_园丁cent vs千足的web ai应用
  17. 欢迎来访个人网站——阳光日志
  18. ACM篇:UVA220黑白棋总结
  19. 【Web 技术】818- 一文带你层层解锁「文件下载」的奥秘
  20. Far planner代码系列(2)

热门文章

  1. slider节点透明背景_【Cocos Creator 实战教程(1)】——人机对战五子棋(节点事件相关)...
  2. 如何将手机投屏到电脑_手机如何投屏到电脑上?详细教程看这里,手机投屏
  3. mysql binlog 大数据_后起之秀 | MySQL Binlog增量同步工具go-mysql-transfer实现详解
  4. 单文件组件的组件传值_移动端组件化架构(下)
  5. php ip处理函数,PHP取ip地址函数
  6. pc模式 华为mate30_华为mate30与电脑连不上怎么回事
  7. c语言——什么时候使用getchar()读取换行符
  8. leetcode209. 长度最小的子数组(滑动窗口)
  9. 7-6 0-1背包 (20 分)(思路加详解+网格做法+动态规划)Come Baby !!!!!!!!!!!!!!
  10. dijkstra算法和floyd算法(C语言)