51Nod 1593 公园晨跑(RMQ,ST表)
http://www.51nod.com/Challenge/Problem.html#!#problemId=1593
思路
关于ST表,建议看这篇博客:https://www.cnblogs.com/YSFAC/p/7189571.html
参考胡小兔大佬的题解搞定了,写的很好,不妨看下,这里就不罗嗦了
1 #define IO std::ios::sync_with_stdio(0); 2 #include <bits/stdc++.h> 3 #define iter ::iterator 4 using namespace std; 5 typedef long long ll; 6 typedef pair<ll,ll>P; 7 #define pb push_back 8 #define se second 9 #define fi first 10 #define rs o*2+1 11 #define ls o*2 12 const ll inf=0x7fffffffffffffff; 13 const int N=2e5+5; 14 ll d[N],h[N],a[N],b[N]; 15 ll n,q; 16 ll ma[N][20],mi[N][20],lg[N]; 17 int check(int x,int y,int z){ 18 if(z==1)return a[x]>a[y]?x:y; 19 return b[x]<b[y]?x:y; 20 } 21 void init(){ 22 a[0]=-inf,b[0]=inf; 23 ll s=0; 24 for(ll i=1;i<=2*n;i++){ 25 s+=d[i]; 26 a[i]=s+h[i]; 27 b[i]=s-h[i]; 28 ma[i][0]=mi[i][0]=i; 29 } 30 for(ll j=1,i=0;j<=2*n;j++){ 31 lg[j]=1<<(i+1)==j?++i:i; 32 //printf("j=%d: %d\n",j,lg[j]); 33 } 34 for(int j=1;(1<<j)<=2*n;j++){ 35 for(int i=1;i+(1<<j)-1<=2*n;i++){ 36 ma[i][j]=check(ma[i][j-1],ma[i+(1<<(j-1))][j-1],1); 37 mi[i][j]=check(mi[i][j-1],mi[i+(1<<(j-1))][j-1],0); 38 } 39 } 40 } 41 ll getma(int l,int r){ 42 if(l>r)return 0; 43 int j=lg[r-l+1]; 44 return check(ma[l][j],ma[r-(1<<j)+1][j],1); 45 } 46 ll getmi(int l,int r){ 47 if(l>r)return 0; 48 int j=lg[r-l+1]; 49 return check(mi[l][j],ma[r-(1<<j)+1][j],0); 50 } 51 ll query(int l,int r){ 52 int x=getma(l,r); 53 int y=getmi(l,r); 54 if(x!=y)return a[x]-b[y]; 55 int x1=check(getma(l,x-1),getma(x+1,r),1); 56 int y1=check(getmi(l,x-1),getmi(x+1,r),0); 57 return max(a[x1]-b[y],a[x]-b[y1]); 58 } 59 int main(){ 60 scanf("%d%d",&n,&q); 61 for(int i=1;i<=n;i++){ 62 int x=i%n+1; 63 int y=i%n+1+n; 64 scanf("%lld",&d[x]); 65 d[y]=d[x]; 66 } 67 for(int i=1;i<=n;i++){ 68 scanf("%lld",&h[i]); 69 h[i]*=2; 70 h[i+n]=h[i]; 71 } 72 init(); 73 while(q--){ 74 int x,y; 75 scanf("%d%d",&x,&y); 76 if(x>y)printf("%lld\n",query(y+1,x-1)); 77 else printf("%lld\n",query(y+1,n+x-1)); 78 } 79 return 0; 80 }
转载于:https://www.cnblogs.com/ccsu-kid/p/10617555.html
51Nod 1593 公园晨跑(RMQ,ST表)相关推荐
- 倍增算法入门 超详细解答+LCA+RMQ(ST表)+例题剖析
目录 一.倍增算法 二.倍增算法的应用:求LCA(最近公共祖先)附模板题 三.倍增算法的应用:RMQ 问题(ST表)附模板题 一.倍增算法 要了解倍增之前,强烈建议大家先看一下这位大佬对倍增的解释:[ ...
- LCA RMQ+ST表学习笔记
RMQ RMQ问题:在给定的一个长度位N的区间中,有M个询问,每次询问给出区间[L,R],求出区间段元素的 最大值/最小值.对于RMQ问题很容易想到遍历的做法,将区间[L,R]中的元素遍历一遍,即可寻 ...
- 倍增算法入门 超详细解答+LCA+RMQ(ST表)+例题剖析
目录 一.倍增算法 二.倍增算法的应用:求LCA(最近公共祖先)附模板题 三.倍增算法的应用:RMQ 问题(ST表)附模板题 一.倍增算法 要了解倍增之前,强烈建议大家先看一下这位大佬对倍增的解释:[ ...
- RMQ与SparseTable(ST表)
静态区间最值问题(RMQ) ST表. #include <iostream> using namespace std;int N, Q; int D[(1<<17)][17]; ...
- 51Nod.1766.树上最远点对(树的直径 RMQ 线段树/ST表)
题目链接 \(Description\) 给定一棵树.每次询问给定\(a\sim b,c\sim d\)两个下标区间,从这两个区间中各取一个点,使得这两个点距离最远.输出最远距离. \(n,q\leq ...
- RMQ问题-ST表倍增处理静态区间最值
简介 ST表是利用倍增思想处理RMQ问题(区间最值问题)的一种工具. 它能够做到O(nlogn)预处理,O(1)查询的时间复杂度,效率相当不错. 算法 1.预处理 ST表利用倍增的思想.以洛谷的P38 ...
- 线性结构 —— ST 表与 RMQ
[概述] RMQ(Range Minimum/Maximum Query),是对于长度为 n 的数列 A,回答若干次询问 RMQ(i,j),返回数列 A 中下标在区间 [i,j] 中的最值,即:区间最 ...
- 【专题】用ST表解决RMQ刷题总结
[专题]用ST表解决RMQ刷题总结 看了一下上次写博客居然是好久以前的事了(我真是老懒狗了 ) 开门见山,直接放专题链接和代码 kuangbin rmq专题 这个contest里面一共十道题但是实际上 ...
- [51nod] 1766树上的最远点对 树的直径 树剖LCA+ST表静态查询
题意: 给你一棵带权树,q次查询,每次给出两个区间,[l1,r1][l2,r2][l_1,r_1] [l_2,r_2][l1,r1][l2,r2]从这两个区间中分别选择两个数字,使得这两个点的 ...
- 【模板】RMQ问题—st表实现
Luogu P3865 [模板]ST表 先放我邵哥的题解qwq邵哥太强辣!!!!!!!!!! 转载于:https://www.cnblogs.com/Hwjia/p/9804239.html
最新文章
- 【视频教程】JEECG 入门视频教程大全+历史版本号代码下载
- 老师,我来帮你推问卷
- dxf geojson 转换_将Geopandas中geojson文件的linestring转换为polygon
- 锐捷网络GSN全局安全政府行业解决方案
- iOS应用签名原理--数字签名?代码签名?双层代码签名?
- 使用大数据可视化平台有什么好处
- handwritten dataset手写体数据集(IAM,RIMES,CVL)
- 《机器学习算法竞赛实战》学习笔记1.竞赛简介
- 在vs2005中遇到的调试问题以及解决办法
- 如何减小电压跟随器输出电阻_运算放大器和比较器还傻傻分不清楚?一篇图文教你轻松辨认...
- 奥鹏教育的计算机作业,东师计算机应用基础20秋在线作业2【标准答案】
- 解决 win10飞行模式 无限自动开关 无法关闭
- 华中师范大学计算机专业有博士点吗,【考博】华中师范大学有没有计算机方面的博士点?...
- Ubuntu20.04 设置虚拟内存
- IEEE754 16进制浮点型 转为十进制
- oracle fnd file.log,oracle D_FILE.PUTamp;FND_FILE.PUT_LINE
- 日常踩坑记录-汇总版
- 淘宝开放平台技术历程----学习转载
- 「CTS2019」氪金手游
- ESP8266开发之旅 阿里云物联网平台篇④ LED智能灯控制系统(MQTTS客户端直连)
热门文章
- Atitit word ppt excel convert txt bp 等文档转换纯文本问题最佳实践.docx Atitit word ppt excel等文档转换txt问题最佳实践 目录 1.
- Atitit 搜集热点,热门文章的整理 attilax 最近
- Atitti 过程导向 vs 结果导向 attilax的策略
- Atitit 分区后的查询 mysql分区记录的流程与原理
- Atitit.互联网 软件编程 数据库方面 架构 大牛 牛人 attilax总结
- paip.提升安全性-----时间判断
- VSCode : vscode-remote下无法写入文件及linux文件读写权限
- 美丽的回测 —— 教你定量计算过拟合概率
- 【疑问】互联网公募基金的销售是繁荣,还是乱象?
- (转)终于把区块链的技术与应用讲清楚了ppt