题目连接:http://poj.org/problem?id=2019

只是增加一个维度,类比一维即可。

好理解,但是可以做的更好http://www.cnblogs.com/yijiull/p/6757935.html

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<algorithm>
 5 using namespace std;
 6 const int maxn=270;
 7 int p[maxn][maxn];
 8 int pmax[maxn][maxn][20];
 9 int pmin[maxn][maxn][20];
10 int  n,b,k;
11
12 void RMQ_INIT()
13 {
14     int f=log(n+0.0)/log(2.0);
15     for(int i=1;i<=n;i++)
16         for(int j=1;j<=n;j++)
17             pmax[i][j][0]=pmin[i][j][0]=p[i][j];
18     for(int i=1;i<=n;i++)
19     for(int k=1;k<=f;k++)
20     for(int j=1;j+(1<<k)-1<=n;j++)
21     {
22         pmax[i][j][k]=max(pmax[i][j][k-1],pmax[i][j+(1<<k-1)][k-1]);
23         pmin[i][j][k]=min(pmin[i][j][k-1],pmin[i][j+(1<<k-1)][k-1]);
24     }
25     return;
26 }
27
28
29 int rmq(int r,int c)
30 {
31     int l=c,rr=c+b-1;
32     int k=log(b+0.0)/log(2.0);
33     int maxx=-0x3f3f3f3f,minn=0x3f3f3f3f;
34     for(int i=r;i<r+b;i++)
35     {
36         maxx=max(maxx,max(pmax[i][l][k],pmax[i][rr-(1<<k)+1][k]));
37         minn=min(minn,min(pmin[i][l][k],pmin[i][rr-(1<<k)+1][k]));
38     }
39     return maxx-minn;
40 }
41 int main()
42 {
43     while(scanf("%d%d%d",&n,&b,&k)!=EOF)
44     {
45         for(int i=1;i<=n;i++)
46             for(int j=1;j<=n;j++)
47                 scanf("%d",&p[i][j]);
48         RMQ_INIT();
49         int r,c;
50         while(k--)
51         {
52             scanf("%d%d",&r,&c);
53             printf("%d\n",rmq(r,c));
54         }
55     }
56
57 }

转载于:https://www.cnblogs.com/yijiull/p/6754787.html

poj2019(二维RMQ)相关推荐

  1. POJ2019(二维RMQ问题 ST)

    题目:Cornfields 只是注意本题数据定义小一点,不然会超内存. #include <stdio.h> #include <iostream> #include < ...

  2. P2216 [HAOI2007]理想的正方形(二维RMQ)

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

  3. 【bzoj1047】[HAOI2007]理想的正方形 二维RMQ

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

  4. 理想的正方形 HAOI2007(二维RMQ)

    理想的正方形 省队选拔赛河南  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 大师 Master       题目描述 Description 有一个a*b的整数组成的矩阵,现 ...

  5. HDU2888(二维RMQ)

    题目:Check Corners 本题碉堡了,内存限制好紧,再大一点都不行,还只能用int,开始用short WA了好多次..... 题意:给一个矩阵,然后给Q个询问,每个询问有四个数,分别代表询问的 ...

  6. Codeforces713D(二维RMQ)

    区间最大子正方形问题. 预处理后二分答案验证 AC Code: #include<bits/stdc++.h> #define maxn 1005 #define lim 10 using ...

  7. 2018山东冬令营:UPC 计数问题 (二维树状数组)

    计数问题 时间限制: 1 Sec  内存限制: 128 MB 提交: 185  解决: 51 [提交][状态][讨论版][命题人:admin] 题目描述  一个n*m的方格,初始时每个格子有一个整数权 ...

  8. 条形码?二维码?生成、解析都在这里!

    二维码生成与解析 一.生成二维码 二.解析二维码 三.生成一维码 四.全部的代码 五.pom依赖 直接上代码: 一.生成二维码 public class demo {private static fi ...

  9. OpenCV 笔记(08)— 二维点、三维点、基于 Mat 的 std::vector 等常用数据结构的定义和输出

    1. 定义和输出二维点 Point2f p2(3, 4);cout << "[二维点] is "<< endl << p2 << e ...

最新文章

  1. Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持
  2. 《Linux命令行与shell脚本编程大全》第十二章 使用结构化命令
  3. Ubuntu安装无线网卡驱动
  4. Ghostscript的介绍
  5. 根据车辆型号自动生成车辆编号
  6. dos命令行的四种打开方式
  7. 手机html在哪个文件里,手机相册在哪个文件夹,教您手机图片存放在哪里
  8. 微信公众号接入百度天气API接口实现代码
  9. 服务器证书有问题苹果手机,iPhone应用程序中的“服务器证书不可信”错误
  10. [跟进]_中国银联悄然推出B2C网站-银联在线商城
  11. ibm服务器前面板显示屏,ibm_x3500服务器前面板指示灯的含义.doc
  12. 用python写猜数字游戏
  13. 计算机网络ping用法,Ping命令及用法详解
  14. Nodejs中使用ioredis库
  15. opencv曝光过度_使用 OpenCV 进行曝光融合(Exposure Fusion)成像
  16. 远程命令执行漏洞与远程代码执行漏洞33333
  17. 动态规划简单例子——国王与金矿(c++)
  18. 按键精灵,简单游戏脚本
  19. ubuntu体验python_22款神奇的Ubuntu软件,帮你的系统成为全场最佳
  20. VBox组件内部局域网

热门文章

  1. python判断对错题_python 初学者错题本
  2. 【必看】谈谈变更过程中的运维意识
  3. java mysql 占位符_在Java中编写带占位符的SQL语句
  4. getbean方法找不到bean_和平精英:一直找不到敌人?5个方法,让你彻底摆脱“瞎子”...
  5. java发送加密报文_RSA加密---从后台到客户端实现报文加解密
  6. html 关键帧作标记,关键帧有什么用?
  7. python类属性描述_如何描述Python对象,以及属性、标识、类型和值之间的关系?...
  8. ubuntu20分区_「图」Canonical希望Ubuntu 20.04 LTS Server Installer更快更舒适
  9. unet论文_图像分割之RefineNet 论文笔记
  10. 基于matlab的捷联惯导算法设计及仿真,基于 Matlab 的捷联惯导算法设计及仿真1doc.doc...