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

RMQ模板

时间:2018-05-19 00:44:19      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:处理   col   ret   gcd   int   void   div   span   bre   

预处理:

 1 void init(int n)
 2 {
 3     for (int i = 0;i < n;i++)
 4     {
 5         dp[i][0] = a[i];
 6     }
 7     int bitn = (int)(log(n)/log(2.0));
 8     for (int j = 1;j <= bitn;j++)
 9     {
10         for (int i = 0;i < n;i++)
11         {
12             if (i + (1 << j) - 1 >= n) break;
13             dp[i][j] = F(dp[i][j-1],dp[i+(1 << (j-1))][j-1]);//这个F就是一个功能函数
14         }
15     }
16 }

查询:

1 int que(int l,int r)
2 {
3     int k = (int)(log(r-l+1.0) / log(2.0));
4     return gcd(dp[l][k],dp[r-(1<<k)+1][k]);
5 }

 

RMQ模板

标签:处理   col   ret   gcd   int   void   div   span   bre   

原文地址:https://www.cnblogs.com/kickit/p/9058556.html

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