zoukankan      html  css  js  c++  java
  • loj2074 「JSOI2016」灯塔

    loj 题面错的……去bzoj上看吧qwq

    观察到 (sqrt{|i-j|}) 的取值只有 (sqrt{n}) 级别个,然后就很显然了,rmq。

    #include <iostream>
    #include <cstdio>
    using namespace std;
    int n, a[100005], st[100005][19], mlg[100005];
    int getMax(int l, int r){
    	if(l>r)	return -0x3f3f3f3f;
    	int p=mlg[r-l+1];
    	return max(st[l][p], st[r-(1<<p)+1][p]);
    }
    int main(){
    	cin>>n;
    	for(int i=1; i<=n; i++){
    		scanf("%d", &a[i]);
    		st[i][0] = a[i];
    	}
    	for(int i=2; i<=n; i++)
    		mlg[i] = mlg[i>>1] + 1;
    	for(int i=1; i<=17; i++)
    		for(int j=1; j<=n && j+(1<<(i-1))<=n; j++)
    			st[j][i] = max(st[j][i-1], st[j+(1<<(i-1))][i-1]);
    	for(int i=1; i<=n; i++){
    		int p=a[i];
    		for(int x=1; ; x++){
    			p = max(p, getMax(max(i-x*x, 1), i-(x-1)*(x-1)-1)+x);
    			if(i-x*x<=1)	break;
    		}
    		for(int x=1; ; x++){
    			p = max(p, getMax(i+(x-1)*(x-1)+1, min(i+x*x, n))+x);
    			if(i+x*x>=n)	break;
    		}
    		printf("%d
    ", p-a[i]);
    	}
    	return 0;
    }
    
  • 相关阅读:
    11月28日总结
    12月06日总结
    12月02日总结
    11月26日总结
    12月05日总结
    11月30日总结
    软件设计职责链模式
    软件设计策略模式
    软件设计组合模式
    大数据竞赛练习题二
  • 原文地址:https://www.cnblogs.com/poorpool/p/9049238.html
Copyright © 2011-2022 走看看