理想的正方形

省队选拔赛河南

 时间限制: 1 s
 空间限制: 256000 KB
 题目等级 : 大师 Master

 
 

 
题目描述 Description

有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。

输入描述 Input Description

第一行为3个整数,分别表示a,b,n的值

第二行至第a+1行每行为b个非负整数,表示矩阵中相应位置上的数。每行相邻两数之间用一空格分隔。

输出描述 Output Description

仅一个整数,为a*b矩阵中所有“n*n正方形区域中的最大整数和最小整数的差值”的最小值。

样例输入 Sample Input

5 4 2

1 2 5 6

0 17 16 0

16 17 2 1

2 10 2 1

1 2 2 2

样例输出 Sample Output

1

数据范围及提示 Data Size & Hint

(1)矩阵中的所有数都不超过1,000,000,000

(2)20%的数据2<=a,b<=100,n<=a,n<=b,n<=10

(3)100%的数据2<=a,b<=1500,n<=a,n<=b,n<=100

/*
嗯,脑补二维RMQ fail,挂成暴力分。
一维是维护一个区间,二维是维护一个矩阵。
由于这个题是小正方形,三维数组即可。二维RMQ略麻烦...
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>#define x2 x1+n-1-(1<<m)+1
#define y2 y1+n-1-(1<<m)+1using namespace std;
void read(int &x)
{int f=1;x=0;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}while(isdigit(c)){x=(x<<3)+(x<<1)+c-'0';c=getchar();}x*=f;
}void out(int x)
{if(!x){putchar('0');return;}if(x<0){x=~x+1;putchar('-');}char c[30]= {0};while(x)c[++c[0]]=x%10+48,x/=10;while(c[0])putchar(c[c[0]--]);
}
const int inf=1e3+29;
int i,j,k,m;
int g[inf][inf][12];
int f[inf][inf][12];
int x,y,n;
int ans=0x7fffffff;int query(int x1,int y1)
{int maxn=0,minn=0x7fffffff;maxn=max(f[x1][y1][m],f[x2][y2][m]);maxn=max(maxn,f[x1][y2][m]);maxn=max(maxn,f[x2][y1][m]);minn=min(g[x1][y1][m],g[x2][y2][m]);minn=min(minn,g[x1][y2][m]);minn=min(minn,g[x2][y1][m]);return maxn-minn;
}int main()
{read(y);read(x);read(n);m=log(n)/log(2);for(i=1; i<=y; i++)for(j=1; j<=x; j++){read(f[j][i][0]);g[j][i][0]=f[j][i][0];}for(k=1; k<=12; k++)for(i=1; i+(1<<k)-1<=x; i++)for(j=1; j+(1<<k)-1<=y; j++){f[i][j][k]=max(f[i][j][k-1],f[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);f[i][j][k]=max(f[i][j][k],f[i+(1<<(k-1))][j][k-1]);f[i][j][k]=max(f[i][j][k],f[i][j+(1<<(k-1))][k-1]);g[i][j][k]=min(g[i][j][k-1],g[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);g[i][j][k]=min(g[i][j][k],g[i+(1<<(k-1))][j][k-1]);g[i][j][k]=min(g[i][j][k],g[i][j+(1<<(k-1))][k-1]);}for(i=1; i+n-1<=x; i++)for(j=1; j+n-1<=y; j++)ans=min(ans,query(i,j));out(ans);return 0;
}

转载于:https://www.cnblogs.com/L-Memory/p/7719132.html

理想的正方形 HAOI2007(二维RMQ)相关推荐

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

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

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

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

  3. P2601 [ZJOI2009]对称的正方形(二维哈希)(二分)

    洛谷传送门 文章目录 题目描述 解析 代码 题目描述 解析 做三个hash 分一下正方形边长的奇偶性 然后枚举中心点,二分边长即可 有点类似模拟赛那道红十字的题 我一开始觉得分奇偶好麻烦啊 为什么不直 ...

  4. poj2019(二维RMQ)

    题目连接:http://poj.org/problem?id=2019 只是增加一个维度,类比一维即可. 好理解,但是可以做的更好http://www.cnblogs.com/yijiull/p/67 ...

  5. 正方形个数(二维点哈希)

    题目:http://poj.org/problem?id=2002 题意:平面上给定n个点,求由这些点能构成多少个正方形. 分析:我们枚举两个点,那么在这两个点形成的直线两边可以计算出正方形的另外两个 ...

  6. bzoj 1414 bzoj 3705: [ZJOI2009]对称的正方形(二维Hash)

    1414: [ZJOI2009]对称的正方形 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 727  Solved: 345 [Submit][St ...

  7. Codeforces713D(二维RMQ)

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

  8. HDU2888(二维RMQ)

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

  9. POJ2019(二维RMQ问题 ST)

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

最新文章

  1. 在windows平台使用Apache James搭建邮件服务器以及使用C#向外网发送邮件
  2. 计算机视觉-计算机视觉开源库OpenCV基础
  3. java 8 新特性之日期-时间 API
  4. 斯坦佛编程教程-Unix编程工具(五)
  5. 数组的操作与方法的操作 0303 2101
  6. 集结号!四大国产开源数据库共聚申城,共话未来技术演进
  7. 算法工程师面试备战笔记7_数据清洗与特征处理
  8. java编程菜鸟入门01
  9. IDEA解决maven多module出现多root的问题
  10. 词形变换和词干提取工具(英文)
  11. jupyter notebook 多行输出
  12. 泛微E8调整附件大小和属性
  13. 20个你需要知道的JavaScript简写代码片段
  14. 【Excel】用excel生成矩阵
  15. 路由器、交换机的基本配置 1
  16. 建木(Jianmu)----迈出建木第一步创建项目分组
  17. situ课题组工作站神经网络训练速度测评
  18. Unity实战之牧师与魔鬼(动作分离版)
  19. Android录制屏幕视频 将视频转换为GIF动态图
  20. 阿里云服务器从购买到项目部署详细流程

热门文章

  1. 《Android游戏开发详解》一1.1 什么是编程
  2. 在互联网时代如何工作得更简单
  3. 对客户端树控件的包装
  4. 从自卑的阴影中走出来
  5. vue 2.0项目 favicon.ico不显示 解决方案
  6. sip消息类型和消息代码详解-转
  7. 蓝桥杯 ALGO-112 算法训练 暗恋
  8. 在wordpress中使用 markdown:wp-markdown插件的使用方法
  9. 蓝桥杯 ADV-205算法提高 拿糖果(动态规划)
  10. L1-018. 大笨钟-PAT团体程序设计天梯赛GPLT