1. int main(){
  2. for (int i = ; i <= n; i++)
  3. for (int j = ; j <= m; j++) {
  4. scanf("%d", &val[i][j]);
  5. dp[i][j][][] = val[i][j];
  6. }
  7.  
  8. for (int i = ; ( << i) <= n; i++) {
  9. for (int j = ; ( << j) <= m; j++) {
  10. if (i == && j == ) continue;
  11. for (int row = ; row + ( << i) - <= n; row++)
  12. for (int col = ; col + ( << j) - <= m; col++) {
  13. //当x或y等于0的时候,就相当于一维的RMQ了
  14. //if(i == 0) dp[row][col][i][j] = max(dp[row][col][i][j - 1], dp[row][col + (1 << (j - 1))][i][j - 1]);
  15. if (j == ) dp[row][col][i][j] = max(dp[row][col][i - ][j], dp[row + ( << (i - ))][col][i - ][j]);
  16. else dp[row][col][i][j] = max(dp[row][col][i][j - ], dp[row][col + ( << (j - ))][i][j - ]);
  17. }
  18. }
  19. }
  20. }

因为i == 0时的代码和 i != 0 && j != 0时的一样 所以就合并了

i  !=0 && j != 0时

查询:

询问的话,也要稍加改变,一维RMQ返回的是一段区间的最值,而二维的RMQ需要返回的一个矩阵的最值,所以返回的时候要注意,所返回的一定要构成一个矩阵

按照一维RMQ的思路来做的话,二维的就要返回四个值的最值了(假设询问的是(x1, y1), (x2, y2)这个矩阵内的最值) 
那么应该返回的是 
m1 = dp[x1][y1][k1][k2] 
m2 = dp[x2 - (1 << k1 ) + 1][y1][k1][k2] 
m3 = dp[x1][y2 - (1 << k2) + 1][k1][k2] 
m4 = dp[x2 - (1 << k1) + 1][y2 - (1 << k2) + 1][k1][k2] 
这四个值再去最值即可

  1. //本来一维RMQ询问的时候是一个区间,现在变成了一个矩形,所以需要四个角度
  2. int rmq(int x1, int y1, int x2, int y2) {
  3. int kx = , ky = ;
  4. while (( << ( + kx)) <= x2 - x1 + 1) kx++;
  5. while (( << ( + ky)) <= y2 - y1 + 1) ky++;
  6. int m1 = dp[x1][y1][kx][ky];
  7. int m2 = dp[x2 - ( << kx) + ][y1][kx][ky];
  8. int m3 = dp[x1][y2 - ( << ky) + ][kx][ky];
  9. int m4 = dp[x2 - ( << kx) + ][y2 - ( << ky) + ][kx][ky];
  10.  
  11. return max(max(m1, m2), max(m3, m4));
  12. }

大约就是这样。。。手残 见谅。。

以上模板是求最大值  求最小值 该max为min即可

二维RMQ模板的更多相关文章

  1. hdu 2888 二维RMQ模板题

    Check Corners Time Limit: 2000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  2. poj2019 二维RMQ模板题

    和hdu2888基本上一样的,也是求一个矩阵内的极值 #include<iostream> #include<cstring> #include<cstdio> # ...

  3. POJ 2019 Cornfields [二维RMQ]

    题目传送门 Cornfields Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7963   Accepted: 3822 ...

  4. HDU 2888:Check Corners(二维RMQ)

    http://acm.hdu.edu.cn/showproblem.php?pid=2888 题意:给出一个n*m的矩阵,还有q个询问,对于每个询问有一对(x1,y1)和(x2,y2),求这个子矩阵中 ...

  5. HDU 2888 Check Corners (模板题)【二维RMQ】

    <题目链接> <转载于 >>> > 题目大意: 给出一个N*M的矩阵,并且给出该矩阵上每个点对应的值,再进行Q次询问,每次询问给出代询问子矩阵的左上顶点和右下 ...

  6. hduacm 2888 ----二维rmq

    http://acm.hdu.edu.cn/showproblem.php?pid=2888 模板题  直接用二维rmq 读入数据时比较坑爹  cin 会超时 #include <cstdio& ...

  7. hdu2888 二维RMQ

    Check Corners Time Limit: 2000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

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

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

  9. HDU2888 Check Corners(二维RMQ)

    有一个矩阵,每次查询一个子矩阵,判断这个子矩阵的最大值是不是在这个子矩阵的四个角上 裸的二维RMQ #pragma comment(linker, "/STACK:1677721600&qu ...

随机推荐

  1. arcpy示范教学(一):基本操作

    arcpy基本操作 打开目录,遍历目录,打开要素类,遍历要素,打开文件,写入属性值 import arcpy import codecs # 设置工作目录 arcpy.env.workspace = ...

  2. Mysql取消SSH链接和恢复SSH链接

    取消SSH链接//键入密码,链接上mysql mysql -u root -p USE MYSQL; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIF ...

  3. html5新特性localStorage和sessionStorage

    HTML5 提供了两种在客户端存储数据的新方法: localStorage: (1)它的生命周期是永久的,关闭页面或浏览器之后localStorage中的数据也不会消失. (2)它的容量大小是5M作用 ...

  4. 【转】RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第二篇【原理】

    接着上一篇,我们开始聊聊APPIUM的框架和运行模式.废话不多说直接上图. 1.首先自动化脚本通过RobotFrameWork将命令传递给Appium的客户端: 2.然后[Appium的客户端]将接受 ...

  5. 二、Django快速安装

    一.安装Python 作为一个Python Web框架,Django依赖Python.从Django适用于哪些版本的Python可以获取更多信息.较新版本的Python内置一个轻量级的数据库SQLit ...

  6. HTML从入门到放弃

    一.HTML 简介 链接:https://www.cnblogs.com/baishuchao/articles/9179920.html 二.HTML 基础 链接:https://www.cnblo ...

  7. 深入了解MySQL存储索引

    (一)关于存储引擎 创建合适的索引是SQL性能调优中最重要的技术之一.在学习创建索引之前,要先了解MySql的架构细节,包括在硬盘上面如何组织的,索引和内存用法和操作方式,以及存储引擎的差异如何影响到 ...

  8. 4星|《财经》2018年第15期:电动飞机、无人小飞机、AI无人机

    <财经>2018年第15期 总第532期 旬刊 本期主题是AI.有多篇国内AI行业的比较深入的调查报告,比较有意思的有:电动飞机.无人小飞机.AI无人机.欧盟通用数据保护条例.Amazon ...

  9. spark读取外部配置文件的方法

    spark读取外部配置文件的方法 spark-submit  --files /tmp/fileName /tmp/test.jar 使用spark提交时使用--files参数,spark会将将本地的 ...

  10. zabbix搭建并结合mikoomi插件监控hadoop集群

    一.环境说明 系统: CentOS release 6.4 mysql 5.1.67 Apache/2.2.25 二.安装php 由于zabbix提供的frontends是php编写的,因此需要搭建l ...