[BZOJ2216][POI2011]Lightning Conductor && 1D1D
来源:互联网 发布:java冒泡排序代码详解 编辑:程序博客网 时间:2024/05/22 07:02
题目描述
已知一个长度为n的序列a1,a2,...,an。对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt(abs(i-j))输入
第一行n,(1<=n<=500000)下面每行一个整数,其中第i行是ai。(0<=ai<=1000000000)输出
n行,第i行表示对于i,得到的p
样例输入
已知一个长度为n的序列a1,a2,...,an。
对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt(abs(i-j))
第一行n,(1<=n<=500000)
下面每行一个整数,其中第i行是ai。(0<=ai<=1000000000)
n行,第i行表示对于i,得到的p
(如果复制到控制台无换行,可以先粘贴到文本编辑器,再复制)
6532424
样例输出
235354
#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<cmath>#include<queue>#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int MAXN = 500000;int a[MAXN+10], n;double Left[MAXN+10], Right[MAXN+10];struct Node { int pos, l, r; Node () {} Node (int p, int L, int R) : pos(p), l(L), r(R) {}} Q[MAXN+10];double calc(int i, int j) { return a[i] + sqrt(abs(i-j));}int search(int L, int R, int i, int j) { while(L < R) { int mid = (L + R) >> 1; if(calc(i, mid) < calc(j, mid)) L = mid+1; else R = mid; } return L;}void dp(double ans[]) { int F =0, R = 0; for(int i = 1; i <= n; i++) { if(F < R && ++Q[F].l > Q[F].r) F++; if(F >= R || calc(i, n) > calc(Q[R-1].pos, n)) { while(F < R && calc(i, Q[R-1].l) > calc(Q[R-1].pos, Q[R-1].l)) R--; if(F >= R) Q[R++] = Node(i, i, n); else { int st = search(Q[R-1].l, Q[R-1].r, i, Q[R-1].pos); Q[R-1].r = st-1; Q[R++] = Node(i, st, n); } } ans[i] = calc(Q[F].pos, i); }}int main() { SF("%d", &n); for(int i = 1; i <= n; i++) SF("%d", &a[i]); dp(Left); reverse(a+1, a+1+n); dp(Right); reverse(Right+1, Right+1+n); reverse(a+1, a+1+n); for(int i = 1; i <= n; i++) PF("%d\n", (int)ceil(max(Left[i], Right[i]) - a[i]));}
0 0
- [BZOJ2216][POI2011]Lightning Conductor && 1D1D
- 【POI2011】【BZOJ2216】Lightning Conductor
- 【bzoj2216】 [Poi2011]Lightning Conductor
- BZOJ2216 [Poi2011]Lightning Conductor
- BZOJ2216: [Poi2011]Lightning Conductor
- BZOJ2216: [Poi2011]Lightning Conductor
- 【bzoj2216】[Poi2011]Lightning Conductor
- bzoj2216: [Poi2011]Lightning Conductor
- bzoj2216: [Poi2011]Lightning Conductor 决策单调性
- 【bzoj2216】[Poi2011]Lightning Conductor 决策单调性+整体二分
- [BZOJ2216][Poi2011]Lightning Conductor(dp+决策单调性)
- bzoj2216 Lightning Conductor
- 2216: [Poi2011]Lightning Conductor
- bzoj 2216: [Poi2011]Lightning Conductor
- BZOJ 2216: [Poi2011]Lightning Conductor
- BZOJ2216 Lightning Conductor 决策单调性
- BZOJ 2216 Poi2011 Lightning Conductor 动态规划
- 2216: [Poi2011]Lightning Conductor DP+决策单调性
- a+b problem 杭电1000
- Java基础-02
- 小啼话,天地可笑,别删尔贴
- 从IT行业发展史看下一个风口在哪里?
- uboot2015.01移植到mini2440
- [BZOJ2216][POI2011]Lightning Conductor && 1D1D
- 手机端弹出层:Layer Mobile API文档手册v1.2
- 解决无权限访问从硬盘中桌面文件的问题
- ZOJ 1151--(字符反转,重点在字符的输入)
- 读书笔记:《写给大家看的设计书》
- Spring Integration入门
- Oracle 存储过程
- android 播放局域网共享多媒体文件
- 两点间距离 杭电2001