uva 11235 - Frequent values(RMQ问题)
来源:互联网 发布:粮食安全 大数据 编辑:程序博客网 时间:2024/05/22 05:11
题意:给出一个非降序排列的整数数组a1,a2,。。。an,你的任务是对于一系列询问(i,j),回答ai,ai+1,。。。,aj中出现次数最多的值所出现的次数。
#include<iostream>#include<cstdio>#include<cstring>#define mx 100000+10#define max(x,y) (x)>(y) ? (x) : (y)using namespace std;int n,m,d[mx][18];int a[mx],count[mx],num[mx],l[mx],r[mx];void init(){int i,j;for(i=0;i<m;i++) d[i][0]=count[i];for(j=1;1<<j<=m;j++)for(i=0;i+(1<<j)<=m;i++)d[i][j]=max(d[i][j-1],d[i+(1<<(j-1))][j-1]);}int rmq(int x,int y){if(x>y) return 0;int k=0;while((1<<(k+1))<y-x+1) k++;return max(d[x][k],d[y-(1<<k)+1][k]);}int main(){int i,j,q,res;while(scanf("%d",&n)!=EOF && n){scanf("%d",&q);memset(count,0,sizeof(count));for(i=0,m=0;i<n;i++) {scanf("%d",&a[i]);if(i==0 || a[i]>a[i-1]) {l[m++]=i;if(i) r[m-2]=i-1;}num[i]=m-1;count[m-1]++;}r[m-1]=i-1;init();while(q--){scanf("%d%d",&i,&j);i--;j--;if(num[i]==num[j]){printf("%d\n",j-i+1);continue;}res=rmq(num[i]+1,num[j]-1);res=max(res,r[num[i]]-i+1);printf("%d\n",max(res,j-l[num[j]]+1));}}return 0;}
- uva 11235 - Frequent values(RMQ问题)
- Uva 11235 Frequent values 【RMQ问题】
- UVA - 11235 Frequent values RMQ问题
- UVA 11235--Frequent values+RMQ问题
- uva 11235 Frequent values RMQ问题
- Frequent Values(UVa 11235) RMQ问题
- UVa - 11235 - Frequent values(RMQ)
- UVA 11235 Frequent values(RMQ)
- UVA - 11235 - Frequent values (RMQ)
- UVA 11235 Frequent values(RMQ)
- UVA 11235-Frequent values(RMQ)
- UVA 11235 Frequent values(RMQ)
- UVA 11235 Frequent Values ---RMQ
- UVa 11235 Frequent values(RMQ)
- UVA 11235 - Frequent values(RMQ)
- uva 11235 Frequent values RMQ
- uva 11235 - Frequent values(RMQ)
- UVA 11235 Frequent values RMQ
- log4j.properties典型配置
- 2013-11-08 实验之数独游戏(寻找所有解,局部简化思维,递归逻辑思维)
- Bugs On J2EE
- HDOJ1003 简单DP问题
- 软基作业——最后一次的留念
- uva 11235 - Frequent values(RMQ问题)
- 再谈probit回归和logistic回归
- 第三个程序opengl颜色选择
- Eclipse中如何导入Android SDK目录中的samples项目
- javascript
- HDOJ1004 so easy
- android权限大全
- Android GridView属性集合
- 【PAT Advanced Level】1023. Have Fun with Numbers (20)