博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Frequent values
阅读量:4706 次
发布时间:2019-06-10

本文共 1144 字,大约阅读时间需要 3 分钟。

题意:

n个数q个询问,每次询问区间[i,j]中数出现最多的数的次数,序列是非降序的。

分析:

相同的数都是相邻的,把每段相同的数,标记起来,每段的标号id,左右边界left,right,数量num,当查询时,由三部分right[i]-i+1、j-left[j]+1、和编号id[i]+1,id[j]-1数量的最大值(用RMQ)

#include #include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef pair
PII;typedef long long ll;#define lson l,m,rt<<1#define pi acos(-1.0)#define rson m+1,r,rt<<11#define All 1,N,1#define N 100010#define read freopen("in.txt", "r", stdin)const ll INFll = 0x3f3f3f3f3f3f3f3fLL;const int INF= 0x7ffffff;const int mod = 1000000007;int n,q,v[N],num[N],id[N],lef[N],righ[N],len,d[N][20];void init(){ for(int i=0;i
=0;--i) { if(a[i]!=a[i+1]) r=i; righ[i]=r; } init(); int x,y; while(q--){ scanf("%d%d",&x,&y); x--; y--; if(id[x]==id[y]) printf("%d\n",y-x+1); else if(id[y]-id[x]==1) printf("%d\n",max(righ[x]-x+1,y-lef[y]+1)); else printf("%d\n",max(max(righ[x]-x+1,y-lef[y]+1),RMQ(id[x]+1,id[y]-1))); } }return 0;}

 

转载于:https://www.cnblogs.com/zsf123/p/4909810.html

你可能感兴趣的文章
Happy Number
查看>>
Sqlserver 系统视图简单说明
查看>>
【摘录】PHP异步调用实现方式
查看>>
php缓存机制
查看>>
bzoj2049 线段树 + 可撤销并查集
查看>>
sql语句---存在即更新,否则insert
查看>>
cookie机制、session机制
查看>>
BZOJ 3787: Gty的文艺妹子序列
查看>>
Comet OJ - Contest #5 简要题解
查看>>
CF1093G Multidimensional Queries
查看>>
移动端提升页面速度与网站性能
查看>>
深度学习中优化【Normalization】
查看>>
POJ2309BST(树状数组)
查看>>
洛谷P2114 起床困难综合症【位运算】【贪心】
查看>>
net 把指定 URI 的资源下载到本地
查看>>
一个关于session的问题
查看>>
加快开发时间的8个CSS的预处理程序
查看>>
dom元素高度、屏幕高度 获取
查看>>
asp.net 设置session失效时间
查看>>
杭电多校第四场 E Matrix from Arrays
查看>>