uva11235 FrequentValues (ST表)
既然他是非降的,那我们可以把这个序列每一位转化成到这位位置连续相同的个数,比如001111233444变成121234112123,然后一个区间内的最大值就是众数的位数。但有个问题,就是这个区间的左端点可能切开了某个连续相同的段,比如1111查后两个,查到的最大值就是4,只要给每一位记一下从他开始的第一个和他不同的数的位置,就能避免切开连续的一段。但还有询问11[1111]11这种情况,就是左右端点都被同一段覆盖,不要写出锅...
#include<bits/stdc++.h>
#define pa pair<int,int>
#define CLR(a,x) memset(a,x,sizeof(a))
using namespace std;
typedef long long ll;
const int maxn=1e5+; inline ll rd(){
ll x=;char c=getchar();int neg=;
while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} int N,Q;
int a[maxn],b[maxn],nxt[maxn],st[maxn][]; inline void getst(){
for(int i=N;i;i--){
st[i][]=b[i];
for(int j=;i+(<<j)-<=N;j++){
st[i][j+]=max(st[i][j],st[i+(<<j)][j]);
}
}
}
inline int rmq(int l,int r){
if(l>r) return ;
int x=log2(r-l+);
return max(st[l][x],st[r-(<<x)+][x]);
} int main(){
//freopen(".in","r",stdin);
int i,j,k;
while(){
N=rd();if(!N) break;
Q=rd();
for(i=;i<=N;i++) a[i]=rd();
for(i=;i<=N;i++) b[i]=(a[i]==a[i-]?b[i-]+:);
for(i=N,j=N+;i;i--){
nxt[i]=j;
if(b[i]==) j=i;
}
getst();
for(i=;i<=Q;i++){
int l=rd(),r=rd();
printf("%d\n",max(rmq(nxt[l],r),min(r+,nxt[l])-l));
}
} return ;
}
uva11235 FrequentValues (ST表)的更多相关文章
- POJ3693 Maximum repetition substring [后缀数组 ST表]
		
Maximum repetition substring Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9458 Acc ...
 - 【BZOJ-2006】超级钢琴       ST表 + 堆  (一类经典问题)
		
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2473 Solved: 1211[Submit][Statu ...
 - 【BZOJ-3956】Count     ST表 + 单调栈
		
3956: Count Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 173 Solved: 99[Submit][Status][Discuss] ...
 - 【BZOJ-4569】萌萌哒     ST表 + 并查集
		
4569: [Scoi2016]萌萌哒 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 459 Solved: 209[Submit][Status] ...
 - 【BZOJ-4310】跳蚤       后缀数组 + ST表 + 二分
		
4310: 跳蚤 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 180 Solved: 83[Submit][Status][Discuss] De ...
 - HDU5726 GCD(二分 + ST表)
		
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5726 Description Give you a sequence of N(N≤100, ...
 - Hdu 5289-Assignment  贪心,ST表
		
题目: http://acm.hdu.edu.cn/showproblem.php?pid=5289 Assignment Time Limit: 4000/2000 MS (Java/Others) ...
 - Bzoj 2006: [NOI2010]超级钢琴  堆,ST表
		
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2222 Solved: 1082[Submit][Statu ...
 - ST表poj3264
		
/* ST表多次查询区间最小值 设 g[j][i] 表示从第 i 个数到第 i + 2 ^ j - 1 个数之间的最小值 类似DP的说 ans[i][j]=min (ans[i][mid],ans ...
 
随机推荐
- Flutter - 自动引用pub.dartlang.org/packages上最新的packages
			
一般在pubspec.yaml里面引用pub.dartlang.org/packages的packages时,我们都是在包名称后面加上版本号的,谷歌默认也是这样写的. cupertino_icons: ...
 - C# winform 设置WebBowser 内核版本
			
一种是在网页头部 用 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 使用当前浏览器最新 ...
 - 20155232《网络对抗》Exp2 后门原理与实践
			
20155232<网络对抗>Exp2 后门原理与实践 问题回答 1.例举你能想到的一个后门进入到你系统中的可能方式? 通过网页上弹出来的软件自动安装 2.例举你知道的后门如何启动起来(wi ...
 - shell变量常用方法
			
变量之数组操作: 参考网址:http://www.jb51.net/article/55253.htm #直接赋值 [root@local-]=chengd [root@local-]=xrd [ro ...
 - java监听器(Listener)学习笔记
			
现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次, ...
 - SQL SERVER数据库升级手册
			
背景 最近接手很多项目都跟数据库升级有关.感触还是颇深,写个心得,供大家参考,如果有疑问欢迎留言. 为什么升级? 你可能会因为各种各样的原因选择升级.我认为原因主要是3个方面 1.旧版本使 ...
 - jmeter-如何在JDBC Request中添加多条语句执行
			
1.JDBC Connection Configuration中配置Database URL时在URL后面添加 ?allowMultiQueries=true 2.JDBC Request中添加语句 ...
 - torchvision 批量可视化图片
			
1.1 简介 计算机视觉中,我们需要观察我们的神经网络输出是否合理.因此就需要进行可视化的操作. orchvision是独立于pytorch的关于图像操作的一些方便工具库. torchvision的详 ...
 - WebStorm安装
			
用到的链接: WebStorm官网:https://www.jetbrains.com/webstorm 破解补丁与注册码网址:http://idea.lanyus.com/ 有条件的朋友请购买正版. ...
 - unity2D限制位置的背景移动补偿效果
			
有时候我们想要背景可以跟随相机移动补偿,但是又不想该背景物体离原来的位置太远,比如我们想要一棵树在一个房子的后面,然后使用相机补偿使其跟随移动,达到3D错觉效果,但是我们又不想该物体偏离房屋太远.假设 ...