首页 > 其他 > 详细

[Poi2011]Lightning Conductor

时间:2019-10-26 16:08:36      阅读:79      评论:0      收藏:0      [点我收藏+]

[Poi2011]Lightning Conductor

决策单调性,分治求解(当然也可以单调队列维护)

单调性:对于每一个\(i\),先考虑左边的决策点\(j\),则\(j\)\(i\)的递增而递增

意会型证明:

如果左边有多个值递减的点,当\(i\)较小时,\(i-j\)较小,\(\sqrt{i-j}\)的梯度较大,所以远处的点可能答案更大,随着\(i\)的增大

\(\sqrt{i-j}\)的梯度减小了,较近的\(j\)就可能有贡献

分治左右两边即可

const int N=5e5+10;
const ll INF=1ll<<60;
 
 
int n,m;
int a[N];
int ans[N];
 
void Solve(int l,int r,int L,int R){ 
    if(l>r) return;
    int mid=(l+r)>>1,id=L;
    double ma=0;
    rep(i,max(L,mid),R) {
        double x=sqrt(i-mid)+a[i];
        if(x>ma) ma=x,id=i;
    }
    ans[mid]=max(ans[mid],(int)ceil(ma)-a[mid]);
    Solve(l,mid-1,L,id);
    Solve(mid+1,r,id,R);
}
 
 
 
 
int main() {
    rep(i,1,n=rd()) a[i]=rd();
    Solve(1,n,1,n);
    rep(i,1,n/2) swap(a[i],a[n-i+1]),swap(ans[i],ans[n-i+1]);
    Solve(1,n,1,n);
    rep(i,1,n) printf("%d\n",ans[n-i+1]);
}
 

[Poi2011]Lightning Conductor

原文:https://www.cnblogs.com/chasedeath/p/11743273.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!