码迷,mamicode.com
首页 > 其他好文 > 详细

区间中最大的数RMQ

时间:2017-07-15 12:51:18      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:main   src   --   name   nbsp   printf   技术分享   pre   logs   

1174 区间中最大的数技术分享

dmax[i][j]表示区间[i,i+j<<2)

 1 #include <iostream>
 2 #include <stdio.h>
 3 using namespace std;
 4 int n,q,dmax[10010][25],a[10010];
 5 void init(){
 6     for(int i = 1; i <= n; i ++){
 7         dmax[i][0] = a[i];
 8     }
 9     for(int j = 1; (1<<j) <= n; j ++){
10         for(int i = 1; i+(1<<j)-1<= n; i ++){
11             dmax[i][j] = max(dmax[i][j-1],dmax[(1<<(j-1))+i][j-1]);
12         }
13     }
14 }
15 int getValue(int l, int r){
16     int k = 0;
17     while(1<<(k+1) <= (r-l+1))k++;
18     return max(dmax[l][k],dmax[r-(1<<k)+1][k]);
19 }
20 int main(){
21     scanf("%d",&n);
22     for(int i = 1; i <= n; i ++){
23         scanf("%d",&a[i]);
24     }
25     init();
26     scanf("%d",&q);
27     while(q--){
28         int l, r;
29         scanf("%d%d",&l,&r);
30         printf("%d\n",getValue(++l,++r));
31     }
32     return 0;
33 }

 

区间中最大的数RMQ

标签:main   src   --   name   nbsp   printf   技术分享   pre   logs   

原文地址:http://www.cnblogs.com/xingkongyihao/p/7181953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!