和hdu2888基本上一样的,也是求一个矩阵内的极值

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
#define maxn 252
int n,b,q;
int dpmax[maxn][maxn][][],dpmin[maxn][maxn][][],val[maxn][maxn];
void ST(){
int k=log2(n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++) dpmax[i][j][][]=dpmin[i][j][][]=val[i][j];
for(int i=;i<=k;i++)//先求出一行内的最大值和最小值,然后再求出行间的最大值和最小值
for(int j=;j<=k;j++){
if(i== && j==) continue;
for(int r=;r+(<<i)-<=n;r++)
for(int c=;c+(<<j)-<=n;c++)
if(i==){//在同一行内
dpmax[r][c][i][j]=max(dpmax[r][c][i][j-],dpmax[r][c+(<<(j-))][i][j-]);
dpmin[r][c][i][j]=min(dpmin[r][c][i][j-],dpmin[r][c+(<<(j-))][i][j-]);
}
else {
dpmax[r][c][i][j]=max(dpmax[r][c][i-][j],dpmax[r+(<<(i-))][c][i-][j]);
dpmin[r][c][i][j]=min(dpmin[r][c][i-][j],dpmin[r+(<<(i-))][c][i-][j]);
}
}
}
int query(int r,int c){
int r1=r,c1=c,r2=r+b-,c2=c+b-,k=log2(b);
int max1=dpmax[r1][c1][k][k];
int max2=dpmax[r2-(<<k)+][c1][k][k];
int max3=dpmax[r1][c2-(<<k)+][k][k];
int max4=dpmax[r2-(<<k)+][c2-(<<k)+][k][k];
int min1=dpmin[r1][c1][k][k];
int min2=dpmin[r2-(<<k)+][c1][k][k];
int min3=dpmin[r1][c2-(<<k)+][k][k];
int min4=dpmin[r2-(<<k)+][c2-(<<k)+][k][k];
return max(max(max1,max2),max(max3,max4))-min(min(min1,min2),min(min3,min4));
}
int main(){
while(scanf("%d%d%d",&n,&b,&q)==){
for(int i=;i<=n;i++)
for(int j=;j<=n;j++) scanf("%d",&val[i][j]);
ST();int r,c;
while(q--){
scanf("%d%d",&r,&c);
printf("%d\n",query(r,c));
}
}
return ;
}

poj2019 二维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裸题

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

  3. 二维RMQ模板

    int main(){ ; i <= n; i++) ; j <= m; j++) { scanf("%d", &val[i][j]); dp[i][j][][ ...

  4. Cornfields POJ - 2019(二维RMQ板题)

    就是求子矩阵中最大值与最小值的差... 板子都套不对的人.... #include <iostream> #include <cstdio> #include <sstr ...

  5. Cornfields poj2019 二维RMQ

    Cornfields Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u Submit S ...

  6. POJ 2019 Cornfields [二维RMQ]

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

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

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

  8. Zeratul的完美区间(线段树||RMQ模板题)

    原题大意:原题链接 给定元素无重复数组,查询给定区间内元素是否连续 解体思路:由于无重复元素,所以如果区间内元素连续,则该区间内的最大值和最小值之差应该等于区间长度(r-l) 解法一:线段树(模板题) ...

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

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

随机推荐

  1. Hadoop集群-HDFS集群中大数据运维常用的命令总结

    Hadoop集群-HDFS集群中大数据运维常用的命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客会简单涉及到滚动编辑,融合镜像文件,目录的空间配额等运维操作简介.话 ...

  2. 标准遗传算法(实数编码 python实现)模拟二进制交叉SBX 多项式变异

    代码地址: https://github.com/guojun007/real_sga 本部分是采用实数编码的标准遗传算法,整体流程与上一篇二进制编码的基本一致, 主要区别在于本部分的交叉操作为模拟二 ...

  3. 使用swagger来编写在线api文档

    swagger是一个非常简单,强大的框架.快速上手,只需要引入jar包 , 使用注解就可以生成一个漂亮的在线api文档 pom.xml <dependency> <groupId&g ...

  4. 如何下载网易云音乐APP里的MV和短视频?

    本人:网易云音乐死粉,朋友圈大多都用的是云音乐,因为推荐功能牛逼 然后:发现云音乐APP里越来越多吸引我的短视频,经常看到好的就想保存到相册,然后微信发给朋友 但是:不知道怎么下载网易云音乐的短视频, ...

  5. springboot websocket 一篇足够了

    什么是WebSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议 … 为什么要实现握手监控管理 如果说,连接随意创建,不管的话,会存在错误,broken pipe 表面看单纯报 ...

  6. Ant基础知识1

    1.Ant简介 Apache Ant是一个将软件编译/测试/部署等步骤联系在一起加以优化的一个构建工具,常用于java环境中的软件开发.Ant的默认配置文件是build.xml. 对java语言的支持 ...

  7. 2.SpringBoot HelloWorld详解

    1.POM文件 父项目 <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...

  8. Spring第一个helloWorld

    Spring 简介: 轻量级:Spring是非侵入性的-基于Spring开发的应用中的对象可以不依赖于Spring的API 依赖注入(DI—dependdency injection.IOC) 面向切 ...

  9. OptionParser命令参数介绍及使用

    使用optionParse解析命令行参数分以下几个步骤: 创建parser实例 使用add_option添加我们要处理的命令行参数 得到解析sys.argv后的options对象,查看用户的输入 代码 ...

  10. string中substr,find函数使用

    2.string函数 find:某子串的起始位(0开始),函数的第二个参数使用代表从该位开始的后缀 substr:1) x开始的连续y位 2) x开始的后缀 #include<bits/stdc ...