【POI2011】【BZOJ2216】Lightning Conductor

原创 2016年05月03日 16:03:23

Description

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

Input

第一行n,(1<=n<=500000)
下面每行一个整数,其中第i行是ai。(0<=ai<=1000000000)

Output

n行,第i行表示对于i,得到的p

Sample Input

6

5

3

2

4

2

4

Sample Output

2

3

5

3

5

4

HINT

Source

随便化一下式子就发现显然是决策单调的..

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define MAXN 500010
#define GET (ch>='0'&&ch<='9')
using namespace std;
template <class classname>
inline void in(classname &x)
{
    char ch=getchar();x=0;
    while (!GET)    ch=getchar();
    while (GET) x=x*10+ch-'0',ch=getchar();
}
int n;
int a[MAXN];
double f[2][MAXN];
struct node
{
    int l,r,x;
    node()  {}
    node(int _l,int _r,int _x)  {   l=_l;r=_r;x=_x; }
}q[MAXN];
inline double calc(int j,int i) {   return a[j]+sqrt(abs(j-i))-a[i];    }
inline int find(node d,int x)
{
    int l=d.l,r=d.r,mid=(l+r)>>1;
    for (;l<=r;mid=(l+r)>>1)   if (calc(x,mid)<calc(d.x,mid))   l=mid+1;    else    r=mid-1;
    return l;
}
void solve(int id)
{
    for (int i=1,h=1,t=0,j;i<=n;i++)
    {
        if (h<=t&&++q[h].l>q[h].r)    h++;f[id][i]=calc(q[h].x,i);
        if (h>t||calc(i,n)>calc(q[t].x,n))
        {
            while (h<=t&&calc(i,q[t].l)>calc(q[t].x,q[t].l))  t--;
            if (h<=t)    j=find(q[t],i),q[t].r=j-1,q[++t]=node(j,n,i);
            else    q[++t]=node(i,n,i);
        }
    }
}
int main()
{
    in(n);
    for (int i=1;i<=n;i++)   in(a[i]);
    solve(0);
    for (int i=1;i<=(n>>1);i++)    swap(a[i],a[n-i+1]);
    solve(1);
    for (int i=1;i<=n;i++)   printf("%d\n",max(0,(int)ceil(max(f[0][i],f[1][n-i+1]))));
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

lightning mdb 源代码分析系列(3)

本系列前两章已经描述了系统架构以及系统构建的基础内存映射,本章将详细描述lmdb的核心,外存B+Tree的操作。本文将从基本原理、内存操作方式、外存操作方式以及LMDB中的相关函数等几方面描述LMDB...
  • sunfly521
  • sunfly521
  • 2015年09月25日 06:38
  • 339

Android高可拓展框架Conductor源码解析(1)

先上源码地址,点我!介绍Conductor是一个基于视图的“麻雀虽小,五脏俱全”的Android框架,它给标准Android-View进行简单的封装,去掉不必要的特性。 简单聚合 不使用Fragmen...
  • qq284565035
  • qq284565035
  • 2016年04月26日 14:07
  • 1213

poi2011 切题记

18th Polish Olympiad in Informatics Tasks Conspiracy (Stage I) (100/100) Lollipop ...
  • lych_cys
  • lych_cys
  • 2016年07月06日 16:16
  • 987

Netflix Conductor流程系统(二):官方样例搭建

一、首先从git上检出项目 这个https://github.com/Netflix/conductor是项目的github地址, 选择SSH或者HTTPs检出,git clone git@git...
  • u011868076
  • u011868076
  • 2017年07月03日 17:51
  • 1687

lightning mdb 源代码分析(5)-事务控制

本博文系列前面已经探讨了LMDB的系统架构、MMAP映射、B-Tree操作等部分,本文将尝试描述LMDB中的事务控制的实现。 事务的基本特征: 事务是恢复和并发控制的基本单位。它是一个操作序列,这...
  • sunfly521
  • sunfly521
  • 2016年01月04日 16:38
  • 378

Android高可拓展框架Conductor源码解析(2)

Conductor源码解析
  • qq284565035
  • qq284565035
  • 2016年04月26日 16:26
  • 1006

webRTC的音频和视频引擎的使用

webRTC的音频和视频引擎的使用   2013-05-09 13:27:33|  分类: webrtc |举报 |字号 订阅 应群里哥们的要求,现把怎么使用webrt...
  • oupeng1991
  • oupeng1991
  • 2014年06月05日 11:36
  • 2497

【BZOJ 2216】【POI 2011】[动态规划][决策点单调优化]Lightning Conductor

题目描述已知一个长度为n的序列a1,a2,…,an。 对于每个1
  • qq_35479641
  • qq_35479641
  • 2017年03月09日 18:37
  • 145

BZOJ2216【决策单调性】

通过这题学习了决策单调性.顺便学习了wmg_1001【科学】的代码风格. /* I will wait for you */ #include #include #include...
  • Lethelody
  • Lethelody
  • 2015年04月13日 15:59
  • 282

整体二分——[Poi2011]Meteors

https://www.luogu.org/problem/show?pid=3527 洛谷时限比较小,目前超时一个点; 正在联系kkk; 我们要求对于每一个国家,它最早完成时间; 那么我们二...
  • largecub233
  • largecub233
  • 2017年04月24日 10:11
  • 127
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【POI2011】【BZOJ2216】Lightning Conductor
举报原因:
原因补充:

(最多只允许输入30个字)