P3515-[POI2011]Lightning Conductor【整体二分,决策单调性】
正题
题目链接: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(nlogn)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【整体二分,决策单调性】相关推荐
- bzoj 2216: [Poi2011]Lightning Conductor(DP决策单调性)
2216: [Poi2011]Lightning Conductor Time Limit: 25 Sec Memory Limit: 64 MB Submit: 1292 Solved: 443 ...
- BZOJ2216 [Poi2011]Lightning Conductor 【决策单调性dp】
题目链接 BZOJ2216 题解 学过高中数学都应知道,我们要求\(p\)的极值,参变分离为 \[h_j + sqrt{|i - j|} - h_i \le p\] 实际上就是求\(h_j + sqr ...
- BZOJ2216: [Poi2011]Lightning Conductor
第一道此类的题,所以这是一篇假的博客,定理不会证明不理性 也不一定对 我是从这篇博客看的 = = 很显然是让你求 p[i] = max{a[j] + sqrt(i - j)} - a[i] 就是 ma ...
- BZOJ 2216 Poi2011 Lightning Conductor 动态规划
题目大意:给定一个序列aia_i,对于每一个ii求⌈max{aj+|i−j|−−−−−√}−ai⌉\lceil max\{ a_j+\sqrt{|i-j|}\}-a_i\rceil 看了题解才知道是决 ...
- [BZOJ2216][Poi2011]Lightning Conductor[决策单调性优化]
最初在HDU的ACM模板上看到这个分治的DP优化 用这个的前提是不强制在线(f[i]不由前面的f转移过来)且决策单调 \[ \forall j\in \left[ \text{1,}n \right] ...
- BZOJ.2161. 布娃娃【整体二分】
传送门 NNN 个区间记为 [l,r][l,r][l,r]形式,魅力值,记为CiC_iCi形式 NNN 个耐力值,记为 PiP_iPi形式 求覆盖PiP_iPi的区间内,魅力值第iii大是多少 ...
- luogu p3515 Lightning Conductor
luogu p3515 Lightning Conductor 给定一个长度为n的序列,对于每一个i∈[1,n]i∈[1,n]i∈[1,n],求出一个最小的非负整数p,使得对于所有的j∈[1,n]j∈ ...
- [bzoj2527][Poi2011]Meteors_整体二分_树状数组
Meteors bzoj-2527 Poi-2011 题目大意:题目链接. 注释:略. 想法: 首先答案可以离线,且具有单调性. 这里的单调性就是随着时间的推移,每个国家收集的陨石数增加. 不难想到整 ...
- 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 ...
最新文章
- C++实现十大排序算法(冒泡,选择,插入,归并,快速,堆,希尔,桶,计数,基数)排序算法时间复杂度、空间复杂度、稳定性比较(面试经验总结)
- 拥抱iPhone,拥抱软件开发的未来
- java 接口的作用和好处
- ffplay播放没有声音SDL_OpenAudio (2 channels, 44100 Hz): WASAPI can't initialize audio client
- php round half even,PHP round( )用法及代碼示例
- 足球点球 html5,身为西甲第一点球手,C罗只有5次让点经历,难怪点球破门过百...
- 根据年月日计算是星期几的函数,基姆拉尔森计算公式
- Portainer简介及部署
- 26 fps 的视频超分辨率模型 DAP!在线输出720P视频
- jsp input maxlength无效_出现这3个现象, 说明你的孩子在无效学习! 家长们: 原来如此...
- Android 判断wifi是2.4GHz还是5GHz
- html制作翻牌游戏,基于javascript实现句子翻牌网页版小游戏
- 挖数据平台推出实时汇率API接口
- php读取本地txt,php读取本地文件常用函数(fopen与file_get_contents)_PHP教程
- 浏览器主页被篡改为hao123、360和2345解决办法
- cent ultraiso_园丁cent vs千足的web ai应用
- 欢迎来访个人网站——阳光日志
- ACM篇:UVA220黑白棋总结
- 【Web 技术】818- 一文带你层层解锁「文件下载」的奥秘
- Far planner代码系列(2)
热门文章
- slider节点透明背景_【Cocos Creator 实战教程(1)】——人机对战五子棋(节点事件相关)...
- 如何将手机投屏到电脑_手机如何投屏到电脑上?详细教程看这里,手机投屏
- mysql binlog 大数据_后起之秀 | MySQL Binlog增量同步工具go-mysql-transfer实现详解
- 单文件组件的组件传值_移动端组件化架构(下)
- php ip处理函数,PHP取ip地址函数
- pc模式 华为mate30_华为mate30与电脑连不上怎么回事
- c语言——什么时候使用getchar()读取换行符
- leetcode209. 长度最小的子数组(滑动窗口)
- 7-6 0-1背包 (20 分)(思路加详解+网格做法+动态规划)Come Baby !!!!!!!!!!!!!!
- dijkstra算法和floyd算法(C语言)