就是求子矩阵中最大值与最小值的差。。。

板子都套不对的人。。。。

#include <iostream>
#include <cstdio>
#include <sstream>
#include <cstring>
#include <map>
#include <set>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#define rap(i, a, n) for(int i=a; i<=n; i++)
#define rep(i, a, n) for(int i=a, i<n; i++)
#define lap(i, a, n) for(int i=n; i>=a; i--)
#define lep(i, a, n) for(int i=n; i>a; i--)
#define MOD 2018
#define LL long long
#define ULL unsigned long long
#define Pair pair<int, int>
#define mem(a, b) memset(a, b, sizeof(a))
#define _ ios_base::sync_with_stdio(0),cin.tie(0)
//freopen("1.txt", "r", stdin);
using namespace std;
const int maxn = , INF = 0x7fffffff;
int dp[maxn][maxn][][], num[maxn][maxn];
int d[maxn][maxn][][]; int rmq(int x1, int y1, int x2, int y2)
{
int kx = , ky = ;
while (( << ( + kx)) <= x2 - x1 + ) kx++;
while (( << ( + ky)) <= y2 - y1 + ) ky++;
int m1 = dp[x1][y1][kx][ky];
int m2 = dp[x2 - ( << kx) + ][y1][kx][ky];
int m3 = dp[x1][y2 - ( << ky) + ][kx][ky];
int m4 = dp[x2 - ( << kx) + ][y2 - ( << ky) + ][kx][ky];
int m5 = max(max(m1, m2), max(m3, m4)); int n1 = d[x1][y1][kx][ky];
int n2 = d[x2 - ( << kx) + ][y1][kx][ky];
int n3 = d[x1][y2 - ( << ky) + ][kx][ky];
int n4 = d[x2 - ( << kx) + ][y2 - ( << ky) + ][kx][ky];
int n5 = min(min(n1, n2), min(n3, n4)); return m5 - n5;
} int main()
{
int n, b, k;
while(~scanf("%d%d%d", &n, &b, &k))
{
rap(i, , n)
rap(j, , n)
{
scanf("%d", &num[i][j]);
dp[i][j][][] = d[i][j][][] = num[i][j];
} for (int i = ; ( << i) <= n; i++) {
for (int j = ; ( << j) <= n; j++) {
if (i == && j == ) continue;
for (int row = ; row + ( << i) - <= n; row++)
for (int col = ; col + ( << j) - <= n; col++) {
//当x或y等于0的时候,就相当于一维的RMQ了
//if(i == 0) dp[row][col][i][j] = max(dp[row][col][i][j - 1], dp[row][col + (1 << (j - 1))][i][j - 1]);
if (j == )
{
dp[row][col][i][j] = max(dp[row][col][i - ][j], dp[row + ( << (i - ))][col][i - ][j]);
d[row][col][i][j] = min(d[row][col][i - ][j], d[row + ( << (i - ))][col][i - ][j]);
}
else
{
dp[row][col][i][j] = max(dp[row][col][i][j - ], dp[row][col + ( << (j - ))][i][j - ]);
d[row][col][i][j] = min(d[row][col][i][j - ], d[row][col + ( << (j - ))][i][j - ]);
}
}
}
} while(k--)
{
int l, r;
scanf("%d%d", &l, &r);
printf("%d\n", rmq(l, r, l+b-, r+b-)); }
} return ;
}

Cornfields POJ - 2019(二维RMQ板题)的更多相关文章

  1. poj 2019 二维rmq *

    题目大意:给出一个N*N矩形,每个格子上有一个价值.询问一个b*b的矩形在左上角的位置(x,y),(x+b-1,y+b-1)这一部分的最大值-最小值是多少. 模板题 #include <stdi ...

  2. poj2019 二维RMQ裸题

    Cornfields Time Limit: 1000MS   Memory Limit: 30000K Total Submissions:8623   Accepted: 4100 Descrip ...

  3. hdu 2888 二维RMQ模板题

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

  4. poj2019 二维RMQ模板题

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

  5. POJ 2019 Cornfields [二维RMQ]

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

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

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

  7. POJ 2019 Cornfields (二维RMQ)

    Cornfields Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4911   Accepted: 2392 Descri ...

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

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

  9. hduacm 2888 ----二维rmq

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

随机推荐

  1. 【bzoj4827】[Hnoi2017]礼物 FFT

    题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一天 ...

  2. Nginx入门篇(一)之Nginx介绍

    1.简介 Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器. Nginx 是由 Igor Sysoe ...

  3. python全栈开发-前方高能-函数进阶

    python_day_10 一.今日主要内容 1. 动态参数 位置参数的动态参数: *args 关键字参数的动态参数 : **kwargs 顺序: 位置,*args,默认值,**kwargs 在形参上 ...

  4. js判断PC端 移动端 并跳转到对应页面

    一.PC端跳转到移动端 html页面: <script>var webroot="/",catid="{$catid}",murl="m/ ...

  5. python分割文件目录/文件名和后缀

    import os file_path = "D:/test/test.py" (filepath,tempfilename) = os.path.split(file_path) ...

  6. ElasticSearch之CURL操作(有空再去整理)

    https://www.cnblogs.com/jing1617/p/8060421.html ElasticSearch之CURL操作 CURL的操作    curl是利用URL语法在命令行方式下工 ...

  7. Python Requests库简单入门

    我对Python网络爬虫的学习主要是基于中国慕课网上嵩天老师的讲授,写博客的目的是为了更好触类旁通,并且作为学习笔记之后复习回顾. 1.引言 requests 库是一个简洁且简单的处理HTTP请求的第 ...

  8. our team

    今天向大家介绍一下我们的团队,首先我们的团队叫“吉祥三宝”当然我们的三宝不是亲子关系,我们是兄弟关系,对,就是这样 下面来介绍一下我们的团队成团吧: 李奇原: 性格开朗.积极乐观.有责任心,擅长团队协 ...

  9. GIT团队实战

    项目要求 组长博客 遇到的困难及解决办法 组员1(组长):王彬 遇到的困难  在团队任务分工的时候没有充分照顾到所有人,导致队员们的工作量不均. 现场编程时间不够 解决办法 在此对组员们表示抱歉,由于 ...

  10. 软工1816 · 第八次作业(课堂实战)- 项目UML设计(团队)

    本次作业博客 团队信息 队名:起床一起肝活队 原组长: 白晨曦(101) 原组员: 李麒 (123) 陈德斌(104) 何裕捷(214) 黄培鑫(217) 王焕仁(233) 林志华(128) 乐忠豪( ...