首页 > 其他 > 详细

RMQ

时间:2015-08-13 09:57:52      阅读:150      评论:0      收藏:0      [点我收藏+]
技术分享
 1 void RMQ(int num)
 2 {
 3     for(int j = 1; j < 20; ++j)
 4         for(int i = 1; i <= num; ++i)
 5             if(i + (1 << j) - 1 <= num)
 6             {
 7                 maxsum[i][j] = max(maxsum[i][j - 1], maxsum[i + (1 << (j - 1))][j - 1]);
 8                 minsum[i][j] = min(minsum[i][j - 1], minsum[i + (1 << (j - 1))][j - 1]);
 9             }
10 }
11 
12 int getmax(int l, int r) {
13     int k = (int)(log((r-l+1)*1.0) / log(2.0));
14     return max(maxsum[l][k], maxsum[r-(1<<k)+1][k]);
15 }
16 int getmin(int l, int r) {
17     int k = (int)(log((r-l+1)*1.0) / log(2.0));
18     return min(minsum[l][k], minsum[r-(1<<k)+1][k]);
19 }
View Code

 

RMQ

原文:http://www.cnblogs.com/mitrenick/p/4726292.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!