poj2019 二维RMQ模板题
和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模板题的更多相关文章
- hdu 2888 二维RMQ模板题
		Check Corners Time Limit: 2000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ... 
- poj2019 二维RMQ裸题
		Cornfields Time Limit: 1000MS Memory Limit: 30000K Total Submissions:8623 Accepted: 4100 Descrip ... 
- 二维RMQ模板
		int main(){ ; i <= n; i++) ; j <= m; j++) { scanf("%d", &val[i][j]); dp[i][j][][ ... 
- Cornfields POJ - 2019(二维RMQ板题)
		就是求子矩阵中最大值与最小值的差... 板子都套不对的人.... #include <iostream> #include <cstdio> #include <sstr ... 
- Cornfields   poj2019  二维RMQ
		Cornfields Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64u Submit S ... 
- POJ 2019 Cornfields [二维RMQ]
		题目传送门 Cornfields Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7963 Accepted: 3822 ... 
- HDU 2888:Check Corners(二维RMQ)
		http://acm.hdu.edu.cn/showproblem.php?pid=2888 题意:给出一个n*m的矩阵,还有q个询问,对于每个询问有一对(x1,y1)和(x2,y2),求这个子矩阵中 ... 
- Zeratul的完美区间(线段树||RMQ模板题)
		原题大意:原题链接 给定元素无重复数组,查询给定区间内元素是否连续 解体思路:由于无重复元素,所以如果区间内元素连续,则该区间内的最大值和最小值之差应该等于区间长度(r-l) 解法一:线段树(模板题) ... 
- HDU 2888 Check Corners (模板题)【二维RMQ】
		<题目链接> <转载于 >>> > 题目大意: 给出一个N*M的矩阵,并且给出该矩阵上每个点对应的值,再进行Q次询问,每次询问给出代询问子矩阵的左上顶点和右下 ... 
随机推荐
- Linux wget断点续传,限速下载
			未安装wget,联网执行以下命令即可: yum install wget 1.断点续传,只需要添加 -c 参数即可 wget -c http://mirrors.163.com/centos/7.5. ... 
- JAVA记录-maven JDK配置和常用操作
			1.pom.xml加入(JDK编译器配置) <build> <finalName>项目名</finalName> <plugins> <plugi ... 
- Requests快速上手
			发送请求 使用 Requests 发送网络请求非常简单. 一开始要导入 Requests 模块: >>> import requests 然后,尝试获取某个网页.本例子中,我们来获取 ... 
- Java Calendar详解
			网上看到的一篇,码一下.侵删 一:字段和方法的信息 YEAR 字段: public static final int YEAR ; 指示年的 get 和 set 的字段数字.这是一个特定于日历的值: ... 
- 阿里巴巴为什么不用 ZooKeeper 做服务发现?
			阿里巴巴为什么不用 ZooKeeper 做服务发现? http://jm.taobao.org/2018/06/13/%E5%81%9A%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8 ... 
- OSI七层模型与TCP/IP四层模型
			OSI七层模型与TCP/IP四层模型 OSI模型(Open System Interconnection Reference Model,缩写为OSI),全名“开放式系统互联通信参考模型”,是一个试图 ... 
- SmartUpload文件上传组件的使用教程
			在项目中使用SmartUpload组件可以进行文件的上传和下载操作 使用步骤 1.导入jar包,进行build path操作 2.编写文件上传页面,代码如下 <form action=" ... 
- asp.net mvc4 在EF新增的时候报对一个实体或多个实体验证失败
			//entity为空 是数据库上下文会验证实体验证 var entity = db.UserInfo.Where(u => u.Mobile == mobile).FirstOrDefault( ... 
- 错误RSA host key for [ip address] has changed and you have requested strict checking.
			@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS ... 
- C - 数字配对 (网络流 最大费用最大流)
			题目链接:https://cn.vjudge.net/contest/281959#problem/C 题目大意:中文题目 具体思路:用网络流的思想,我们求得是最大的匹配数,那么我们按照二分图的形式去 ... 
