【题目描述】

【思路】
这道题也很不错。首先这道题有O(nlog⁡n)O(n\log n)O(nlogn)做法,但是我不会,我就只会O(nn)O(n \sqrt n)O(nn​)+卡常的做法。这道题唯一的难度就在于那个根号。但是我们知道一个显而易见的性质,对于根号的值相同的所有的j,我们只需要用高度最大的j来更新i的答案。而根号值相同的显然在两侧都是连续的一段区间。根号的取值也不会很大,最多O(n)O(\sqrt n)O(n​)种。所以我们考虑枚举根号的值,查询对应区间最大的hjh_jhj​来更新答案。为了O(1)O(1)O(1)查询,我们需要用st表或猫树。然后这道题就差不多了。卡卡常就过了。
代码:

#include<bits/stdc++.h>
#define re register
#define mp make_pair
using namespace std;
const int N=5e5+5;
inline int red(){int data=0;char ch=getchar();while(ch<'0' || ch>'9') ch=getchar();while(ch>='0' && ch<='9') data=(data<<3)+(data<<1)+ch-'0',ch=getchar();return data;
}int n,m,a,b,c,h[N],len[N];
namespace cat{int f[19][N],pos[N],lim,lo[N];inline void build(int p,int l,int r,int dep){if(l==r)return(void)(pos[l]=p);int mid=(l+r)>>1;f[dep][mid]=h[mid];for(int re i=mid-1;i>=l;--i)f[dep][i]=h[i]>f[dep][i+1]?h[i]:f[dep][i+1];for(int re i=mid+1;i<=r;++i)f[dep][i]=h[i]>f[dep][i-1]?h[i]:f[dep][i-1];build(p<<1,l,mid,dep+1);build(p<<1|1,mid+1,r,dep+1);}inline void pre(){lim=1;while(lim<n)lim<<=1;for(int re i=2;i<=(lim<<1);i++)lo[i]=lo[i>>1]+1;build(1,1,lim,1);}inline int query(int l,int r){if(l==r)return h[l];int d=lo[pos[l]]-lo[pos[l]^pos[r]];return f[d][l]>f[d][r]?f[d][l]:f[d][r];}
}using namespace cat;
int ans[N];
inline void print(int x){if(x>9)print(x/10);putchar((x%10)^48);
}
inline int min(const int&a,const int&b){return a>b?b:a;}
inline int max(const int&a,const int&b){return a<b?b:a;}
inline void cmax(int&a,const int&b){(b>a)&&(a=b);}
int main(){n=red();int x=sqrt(n)+1;for(int re i=1;i<=x;i++)len[i]=i*i;for(int re i=1;i<=n;i++)h[i]=red();pre();for(int re i=1;i<=n;i++){bool f1=0,f2=0;for(int re j=1;j<=x;j++){if(i+len[j-1]<n)cmax(ans[i],query(i+len[j-1]+1,min(n,i+len[j]))-h[i]+j);else f1=1;if(i-len[j-1]>=0)cmax(ans[i],query(max(1,i-len[j]),i-len[j-1]-1)-h[i]+j);else f2=1;if(f1&&f2)break;}}for(int re i=1;i<=n;i++)print(ans[i]),putchar('\n');
}

【JSOI2016】【st表/猫树】【枚举】灯塔相关推荐

  1. 【st表/猫树】【堆+贪心】超级钢琴

    [描述] 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度为Ai,其中A ...

  2. bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队【st表||线段树】

    要求区间取min和max,可以用st表或线段树维护 st表 #include<iostream> #include<cstdio> using namespace std; c ...

  3. 线段树/扫描线问卷调查反馈——Rmq Problem / mex(主席树),Boring Queries(二分+st表+主席树),Colorful Squares(扫描线)

    文章目录 Rmq Problem / mex Boring Queries Colorful Squares Rmq Problem / mex luogu4137 对aia_iai​建权值线段树 再 ...

  4. CF1422F Boring Queries(ST表 + 主席树)

    CF1422F Boring Queries 给定一个长度为nnn的数组a,(1≤ai≤2×105)a,(1 \leq a_i \leq 2 \times 10 ^ 5)a,(1≤ai​≤2×105) ...

  5. 【洛谷3865】 【模板】ST表(猫树)

    传送门 洛谷 Solution 实测跑的比ST表快!!! 这个东西也是\(O(1)\)的,不会可以看我上一篇Blog 代码实现 代码戳这里 转载于:https://www.cnblogs.com/ml ...

  6. 【无码专区10】第K大查询(双向链表 /主席树+st表)

    已自我实现,但还是归入无码专区序列.哈哈哈哈哈 对于my idea部分,我的每一个想法都实现了,可供参考. problem 给定一个 1∼n1\sim n1∼n 的排列和 kkk,求所有 r−l+1≥ ...

  7. 洛谷P4094 [HEOI2016/TJOI2016]字符串【后缀数组+主席树+st表】

    时空限制 2000ms / 256MB 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为n的字符串s,和m个问题.佳媛姐姐必须正确 ...

  8. BZOJ3166 [Heoi2013]Alo 【可持久化trie树 + 二分 + ST表】

    题目 Welcome to ALO ( Arithmetic and Logistic Online).这是一个VR MMORPG , 如名字所见,到处充满了数学的谜题. 现在你拥有n颗宝石,每颗宝石 ...

  9. [51nod] 1766树上的最远点对 树的直径 树剖LCA+ST表静态查询

    题意: 给你一棵带权树,q次查询,每次给出两个区间,[l1,r1][l2,r2][l_1,r_1] [l_2,r_2][l1​,r1​][l2​,r2​]从这两个区间中分别选择两个数字,使得这两个点的 ...

最新文章

  1. 操作系统实验2—实现动态分区分配模拟程序
  2. .Net程序员安卓学习之路5:使用xutils注入View和事件以及图片的显示
  3. AWS elastic load balancer里的监听器certificate设置
  4. python执行linux和window的命令
  5. 使用ShellExecuteEx打开文件或者其他
  6. Type Dynamic Web Module 4.0 requires Java 1.8 or newer----彻底杀死Bug
  7. C++ {}作用域 return
  8. [数据结构] 树链剖分
  9. 很好用的查看PE文件的小工具---LordPE Deluxe 1.4 汉化版
  10. 回溯法——利用解空间树解决0-1背包问题
  11. prettier和beautify哪个好用
  12. 港股通与全球一体化投资交易系统实践
  13. vs2008 下配置 opencv2.0 的总结,以及 vc6 下配置 opencv1.0 的转帖
  14. 【无标题】2023速卖通开店教程,入驻图文讲解!
  15. C. Fishingprince Plays With Array
  16. 怎 样 寻 找 安 全 漏 洞 (转)
  17. Charles(Mac)抓取安卓手机app的包
  18. 图像数据的特征提取方法
  19. UpdateData用法解释
  20. unittest---unittest生成测试报告

热门文章

  1. Cookies 必须启用才能登入。
  2. python jieba分词的tmp_dir报错问题
  3. linux下配置nginx ssl 认证 进行项目80,443端口开放配置
  4. 黑客宣言_创客宣言:你打算做什么?
  5. 谁说菜鸟不会数据分析(入门篇)总结2
  6. Python去除字符串中的非数字、非字母
  7. 十大简单事:复杂到让你困惑
  8. python分析每月销售数据_CD销售数量分析(python)
  9. QQ天气H5-前端完整解析
  10. parentNode与offsetParent区别