Description

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

Input

  第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非负整数,表示矩阵中相应位置上的数。每
行相邻两数之间用一空格分隔。
100%的数据2<=a,b<=1000,n<=a,n<=b,n<=1000

Output

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

题解:
  普及的题目。。。
  就是单调队列,用单调队列横向纵向分别求一下min和max就可以了。
  然而top打成tail,Wa了许多遍,太丢人啦。
代码:
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*f;
}
#define MN 1005
#define inf 1e12
int a,b,n,mp[MN][MN],ans;
pair<int,int>q[MN];
int top,tail,xmax[MN][MN],xmin[MN][MN];
int ma[MN][MN],mi[MN][MN];
void init(){top=;tail=;}
void get(int x){while(tail<=top&&q[tail].second<=x-n) tail++;}
bool pd(int x,int y,int k){if(x<y) return k;if(x>y) return k^;return true;}
void ins(int x,int y,bool k){
while(tail<=top&&pd(q[top].first,x,k)) top--;
q[++top]=make_pair(x,y);
}
int main(){
a=read(),b=read(),n=read();
register int i,j;
for(i=;i<=a;i++) for(j=;j<=b;j++) mp[i][j]=read();
for(i=;i<=a;i++){
init();
for(j=;j<=b;j++){
get(j);
ins(mp[i][j],j,);
xmax[i][j]=q[tail].first;
}
init();
for(j=;j<=b;j++){
get(j);
ins(mp[i][j],j,);
xmin[i][j]=q[tail].first;
}
}
for(j=;j<=b;j++){
init();
for(i=;i<=a;i++){
get(i);
ins(xmax[i][j],i,);
ma[i][j]=q[tail].first;
}
init();
for(i=;i<=a;i++){
get(i);
ins(xmin[i][j],i,);
mi[i][j]=q[tail].first;
}
}
ans=inf;
for(i=n;i<=a;i++)for(j=n;j<=b;j++) ans=min(ans,ma[i][j]-mi[i][j]);
printf("%d\n",ans);
return ;
}

来自PaperCloud的博客,未经允许,请勿转载,TKS

 
 

[HAOI2007][BZOJ 1047]理想的正方形的更多相关文章

  1. [BZOJ]1047 理想的正方形(HAOI2007)

    真·水题.小C本来是不想贴出来的,但是有一股来自东方的神秘力量催促小C发出来. Description 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和 ...

  2. BZOJ 1047 理想的正方形(单调队列)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1047 题意:给出一个n*m的矩阵.在所有K*K的子矩阵中,最大最小差值最小的是多少? 思 ...

  3. BZOJ 1047 理想的正方形

    单调队列的基本应用. #include<iostream> #include<cstdio> #include<cstring> #include<algor ...

  4. bzoj 1047 : [HAOI2007]理想的正方形 单调队列dp

    题目链接 1047: [HAOI2007]理想的正方形 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2369  Solved: 1266[Submi ...

  5. BZOJ 1047: [HAOI2007]理想的正方形( 单调队列 )

    单调队列..先对每一行扫一次维护以每个点(x, y)为结尾的长度为n的最大最小值.然后再对每一列扫一次, 在之前的基础上维护(x, y)为结尾的长度为n的最大最小值. 时间复杂度O(ab) (话说还是 ...

  6. [BZOJ 1047] [HAOI2007] 理想的正方形 【单调队列】

    题目链接:BZOJ - 1047 题目分析 使用单调队列在 O(n^2) 的时间内求出每个 n * n 正方形的最大值,最小值.然后就可以直接统计答案了. 横向有 a 个单调队列(代码中是 Q[1] ...

  7. 【BZOJ】【1047】【HAOI2007】理想的正方形

    DP/单调队列优化 一眼看上去就是DP 我想的naive的二维DP是酱紫滴: mx[i][j][k]表示以(i,j)为右下角的k*k的正方形区域内的最大值,mn[i][j][k]同理 mx[i][j] ...

  8. bzoj千题计划215:bzoj1047: [HAOI2007]理想的正方形

    http://www.lydsy.com/JudgeOnline/problem.php?id=1047 先用单调队列求出每横着n个最大值 再在里面用单调队列求出每竖着n个的最大值 这样一个位置就代表 ...

  9. BZOJ1047: [HAOI2007]理想的正方形 [单调队列]

    1047: [HAOI2007]理想的正方形 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2857  Solved: 1560[Submit][St ...

随机推荐

  1. 常用的HTTP响应头

    响应头 说明 示例 状态 Access-Control-Allow-Origin 指定哪些网站可以跨域源资源共享 Access-Control-Allow-Origin: * 临时 Accept-Pa ...

  2. docker-compose的一些服务一直是restarting

    1.查看日志 docker logs jenkins(镜像名字) 1.1 可能权限问题 1.2可能内存问题

  3. JavaPoet的基本使用

    原文:https://blog.csdn.net/crazy1235/article/details/51876192 JavaPoet JavaPoet 是一个用来生成 .java源文件的Java ...

  4. SIM800A 建立网络

    SIM800A是一款两频GSM/GPRS模块,为SMT封装.其性能稳定,外观小巧,性价比高 可以低功耗实现语音.SMS和数据信息的传输 数据传输 GPRS class 12:最大85.6 kbps(下 ...

  5. zubax_gnss简介

    参考:https://docs.zubax.com/zubax_gnss 目录结构 bootloader:主要功能是升级application.加载application和初始化application ...

  6. JavaWeb开发回顾总结【不断更新中】

    1.Java语言编程 2.Servlet & JSP(JavaServer Pages) JSPGet方法中文乱码,以上是我的一篇解决Get方法的文章. 关于编码的约定,从项目的一开始就要规定 ...

  7. 一些 SQLite技巧

    SQLite自增ID自段 使用方法为 INTEGER PRIMARY KEY AUTOINCREMENT 如: CREATE   TABLE  21andy ( id  INTEGER   PRIMA ...

  8. Linux之redis-sentinel

    一,Redis-Sentinel介绍 Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,redis本身或 ...

  9. 【转】采用Gson解析含有多种JsonObject的复杂json

    本文对应的项目是MultiTypeJsonParser ,项目地址 https://github.com/sososeen09/MultiTypeJsonParser 0 前奏 使用 Gson 去解析 ...

  10. Kotlin扩展作用域分析与扩展的根本作用解析

    在上一次https://www.cnblogs.com/webor2006/p/11219358.html学习了Kotlin的扩展,继续这个话题继续拓展,首先提出这么一个问题:假如我们扩展的方法跟类中 ...