「模版」RMQ+ST表

来源:互联网 发布:vscode 函数补全 编辑:程序博客网 时间:2024/06/06 08:00

RMQ+ Sparse Table(稀疏表)实现模版

#include "stdio.h"#include "math.h"#define MAXN 100#define max(a,b) (a > b ? a : b)const int num[MAXN];int dp[MAXN][20];void create_max (int n) {    int i,j,t;    for (i = 1;i <= n;i++) {        dp[i][0] = num[i];    }    t = (int)(log(n) / log(2.0));    for (j = 1;j <= t;j++) {        for (i = 1;i + (1 << j) - 1 <= n;i++) {            dp[i][j] = max(dp[i][j-1],dp[i+(1 << (j-1))][j-1]);//dp[i][j] = min(dp[i][j-1],dp[i+(1 << (j-1))][j-1]        }    }}int get_max (int a,int b) {    int k = log(b - a + 1) / log(2.0);    return max(dp[a][k],dp[b-(1 << k) + 1][k]);}
0 0