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

st表

时间:2019-12-22 11:04:33      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:log   csdn   线段树   注意   abs   class   pre   区间   结构   

一,预习

1,st表类似于线段树和树状数组,用来解决区间最值查询问题。

2,查询的时间复杂度为o(1).

3,假设你有一个有n个数的数组a[n],简单的结构是st[n][t]表示的是从a[n]中第n个数开始,长度为2^t的最大值。(我也感觉有点..)

4,我确实看懂了st表的预处理。

(https://blog.csdn.net/Mercury_Lc/article/details/84841527)这人的网址,我记录网址的意思是你记得给人家评论一下。

5,敲模板。

你对它内涵的深刻理解也算。

你对它形式的深刻理解也算。

1 int st[n][t];
2 int a[n];
3 for(int i=1;i<=n;i++)    st[i][0]=a[i];
4 int t=log(n)/log(2)+1;
5 for(int j=1;j<t;j++)
6 for(int i=1;i<=n-2^t+1;i++)
7 f[i][j]=max(f[i][j-1],f[i+2^(j-1)][j-1]); 

 

一般是三遍,为什么是三遍了,一般生,二遍熟,三遍用脑子过一下就可以。

6,应用。

7,这个要是错了的话,你一定要注意边界...给它多加个1.

1 int query(int x,int y)
2 {
3     int t=log(abs(y-x+1))/log(2);
4     int a=f[x][t];
5     int b=f[x+2^(t-1)+1][t];//int b=f[y-2^(t-1)][t];//之前就是没加1我调了半个小时
6     return max(a,b);
7 }

就这样先吧

8,这个东西比较重要的地方在于边界!

st表

标签:log   csdn   线段树   注意   abs   class   pre   区间   结构   

原文地址:https://www.cnblogs.com/beiyueya/p/12079099.html

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