【静态RMQ问题ST-在线算法】

来源:互联网 发布:java重载与多态实验 编辑:程序博客网 时间:2024/05/02 19:57

【ST-在线算法 预处理O(nlog(n)) 查询O(1)】

用于查询静态区间[a,b]的最值(max换成min就是最小值)

每次合并上来的区间可能会有重复段

void st_init(int n){repe(i,1,n) dp[i][0] = a[i];//下标从1开始的for(int j = 1; (1<<j) <= n; j++){for(int i = 1; i+(1<<j)-1 <= n; i++)//下标从1开始的dp[i][j] = max(dp[i][j-1], dp[i+(1<<(j-1))][j-1]);}}int st(int x, int y){int k = 0;while((1<<(k+1)) <= y-x+1) k++;return max(dp[x][k], dp[y-(1<<k)+1][k]);}


 

0 0
原创粉丝点击