题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2176
题意:
给定n长的序列, query次询问
下面n个数表示询问
对于每次询问的区间,回答该区间连续相同的数 这样的段最长有多长
思路:
RMQ裸题
特判下左右端点然后中间部分RMQ即可
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
using namespace std;
const int MAXN = 100100;
int n,query;
int A[MAXN];
int FMin[MAXN][20],FMax[MAXN][20];
void Init(){
int i,j;
for(i=1;i<=n;i++)
FMin[i][0]=FMax[i][0]=A[i];
for(i=1;(1<<i)<=n;i++){ //按区间长度递增顺序递推
for(j=1;j+(1<<i)-1<=n;j+