void init(){
for (int i = ; i < n; i++) st[i][] = a[i];
for (int j = ; ( << j) <= n; j++){
for (int i = ; i + ( << j) - < n; i++){
st[i][j] = min(st[i + ( << (j-))][j - ], st[i][j - ]);
}
}
} inline int query(int l, int r){
int len = r - l + ;
int k = ;
while (( << (k + )) <= len) k++;
return min(st[l][k], st[r - ( << k) + ][k]);
}

二维:

定义dp(i, j, k, L)表示以(i,j)为左上角,宽度为(2^k, 2^L)的区间内的某个数值

int dp[maxn][maxn][][], dp2[maxn][maxn][][];

void init_st(){
for (int i = ; ( << i) <= n; i++){
for (int j = ; ( << j) <= n; j++){
if (i == && j == ) continue;
for (int x = ; x + ( << i) - <= n; x++){
for (int y = ; y + ( << j) - <= n; y++){
if (i == ) {
dp[x][y][i][j] = min(dp[x][y][i][j - ], dp[x][y + ( << (j - ))][i][j - ]);
dp2[x][y][i][j] = max(dp2[x][y][i][j - ], dp2[x][y + ( << (j - ))][i][j - ]);
}
else {
dp[x][y][i][j] = min(dp[x][y][i - ][j], dp[x + ( << (i - ))][y][i - ][j]);
dp2[x][y][i][j] = max(dp2[x][y][i - ][j], dp2[x + ( << (i - ))][y][i - ][j]);
}
}
}
}
}
} int query(int x, int y, int X, int Y){
int maxi = , mini = 1e8;
int k1 = , k2 = ;
while ( << ( + k1) <= X - x) k1++;
while ( << ( + k2) <= Y - y) k2++;
maxi = max(maxi, max(dp2[x][y][k1][k2], dp2[X - ( << k1) + ][y][k1][k2]));
maxi = max(maxi, max(dp2[x][Y - ( << k2) + ][k1][k2], dp2[X - ( << k1) + ][Y - ( << k2) + ][k1][k2])); mini = min(mini, min(dp[x][y][k1][k2], dp[X - ( << k1) + ][y][k1][k2]));
mini = min(mini, min(dp[x][Y - ( << k2) + ][k1][k2], dp[X - ( << k1) + ][Y - ( << k2) + ][k1][k2]));
//printf("maxi = %d mini = %d\n", maxi, mini);
return maxi - mini;
}

一维和二维ST模板的更多相关文章

  1. [模板]二维ST表

    考试yy二维ST表失败导致爆零. 其实和一维的ST表很像... 也是设$f[i][j][p][q]$为以$(i, j)$为左上角,长为$2^p$,宽为$2^q$的矩形的最大值. 算法流程是先把每一行都 ...

  2. thinkphp二维数组模板输出方法

    thinkphp二维数组模板输出方法 先写个记录,有空再整理发上来

  3. 二维 ST POJ 2019

    题目大意:给你一个n*n的矩阵,每次给你一个点(x,y),以其为左上角,宽度为b的矩阵中最小的数值和最大数值的差是多少?  一共k个询问. 思路:简单的二维st. 定义dp(i,j,k,L)表示以(i ...

  4. BZOJ3577:玩手机(最大流,二维ST表)

    Description 现在有一堆手机放在坐标网格里面(坐标从1开始),坐标(i,j)的格子有s_(i,j)个手机. 玩手机当然需要有信号,不过这里的手机与基站与我们不太一样.基站分为两种:发送站和接 ...

  5. BZOJ1047[HAOI2007]理想的正方形——二维ST表

    题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入 第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非 ...

  6. 【CodeForces】713 D. Animals and Puzzle 动态规划+二维ST表

    [题目]D. Animals and Puzzle [题意]给定n*m的01矩阵,Q次询问某个子矩阵内的最大正方形全1子矩阵边长.n,m<=1000,Q<=10^6. [算法]动态规划DP ...

  7. 【洛谷 P2216】 [HAOI2007]理想的正方形(二维ST表)

    题目链接 做出二维\(ST\)表,然后\(O(n^2)\)扫一遍就好了. #include <cstdio> #include <cstring> #include <a ...

  8. Codeforces 713D Animals and Puzzle(二维ST表+二分答案)

    题目链接 Animals and Puzzle 题意  给出一个1e3 * 1e3的01矩阵,给出t个询问,每个询问形如x1,y1,x2,y2 你需要回答在以$(x1, y1)$为左上角,$(x1, ...

  9. [HNOI2007] 理想正方形 二维ST表

    题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一行为3个整数,分别表示a,b,n的值 第二行至 ...

随机推荐

  1. Uber CEO博鳌论坛采访:看好中国市场共享经济的发展模式

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  2. js 邮箱和手机号码验证

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. OpenCV代码提取:flip函数的实现

    OpenCV中实现图像翻转的函数flip,公式为: 目前fbc_cv库中也实现了flip函数,支持多通道,uchar和float两种数据类型,经测试,与OpenCV3.1结果完全一致. 实现代码fli ...

  4. Hibernate-ORM:16.Hibernate中的二级缓存Ehcache的配置

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述Hibernate中的二级缓存的配置,作者将使用的是ehcache缓存 一,目录 1.二级缓存的具 ...

  5. 史上最全的PHP正则表达式

    首先看下正则表达式思维导图: 一.校验数字的表达式  1 数字:^[0-9]*$2 n位的数字:^\d{n}$3 至少n位的数字:^\d{n,}$4 m-n位的数字:^\d{m,n}$5 零和非零开头 ...

  6. 活动的生命周期 Android

    1.运行程序 onCreate().onStart()和 onResume() 2.跳转到非弹框视图控制器 onPause()和 onStop() 返回上一个视图控制器(没被回收) onRestart ...

  7. App测试基本流程详解

    1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间. 1.3测试资 ...

  8. json与python解析

    1.json.dumps     将 Python 对象编码成 JSON 字符串   json.loads      将已编码的 JSON 字符串解码为 Python 对象 2.json.dump() ...

  9. laravel跨域问题

    // 只有同源策略才允许发送cookies // header('Access-Control-Allow-Credentials:true'); 需要要index.php下开启 最近写登录图形验证码 ...

  10. 一篇文章解决django中时区问题

    首先要明确的是,当在Django项目的setting.py文件中设置了USE_TZ=True时,我们给定的时间存储到数据库的时候都会变成UTC时间(使用auto_now_add和auto_now为Tr ...