BZOJ 1047 理想的正方形
单调队列的基本应用。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1050
#define inf 2000000000
using namespace std;
int n,m,a,map[maxn][maxn],m1[maxn][maxn][],m2[maxn][maxn][],q1[maxn],q2[maxn],l1,r1,l2,r2,ans=inf;
void get_m1()
{
for (int i=;i<=n;i++)
{
l1=l2=;r1=r2=;
for (int j=m;j>=;j--)
{
while ((l1<=r1) && (q1[l1]>=j+a)) l1++;
while ((l2<=r2) && (q2[l2]>=j+a)) l2++;
while ((l1<=r1) && (map[i][j]>map[i][q1[r1]])) r1--;
while ((l2<=r2) && (map[i][j]<map[i][q2[r2]])) r2--;
q1[++r1]=j;q2[++r2]=j;
m1[i][j][]=map[i][q1[l1]];m1[i][j][]=map[i][q2[l2]];
}
}
}
void get_m2()
{
for (int i=;i<=m;i++)
{
l1=l2=;r1=r2=;
for (int j=n;j>=;j--)
{
while ((l1<=r1) && (q1[l1]>=j+a)) l1++;
while ((l2<=r2) && (q2[l2]>=j+a)) l2++;
while ((l1<=r1) && (m1[j][i][]>m1[q1[r1]][i][])) r1--;
while ((l2<=r2) && (m1[j][i][]<m1[q2[r2]][i][])) r2--;
q1[++r1]=j;q2[++r2]=j;
m2[j][i][]=m1[q1[l1]][i][];m2[j][i][]=m1[q2[l2]][i][];
}
}
}
int main()
{
scanf("%d%d%d",&n,&m,&a);
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
scanf("%d",&map[i][j]);
get_m1();
get_m2();
for (int i=;i<=n-a+;i++)
for (int j=;j<=m-a+;j++)
ans=min(ans,m2[i][j][]-m2[i][j][]);
printf("%d\n",ans);
return ;
}
BZOJ 1047 理想的正方形的更多相关文章
- BZOJ 1047 理想的正方形(单调队列)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1047 题意:给出一个n*m的矩阵.在所有K*K的子矩阵中,最大最小差值最小的是多少? 思 ...
- [BZOJ]1047 理想的正方形(HAOI2007)
真·水题.小C本来是不想贴出来的,但是有一股来自东方的神秘力量催促小C发出来. Description 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和 ...
- [HAOI2007][BZOJ 1047]理想的正方形
Description 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. Input 第一行为3个整数,分别表示a,b,n的值第二行至第 ...
- [BZOJ 1047] [HAOI2007] 理想的正方形 【单调队列】
题目链接:BZOJ - 1047 题目分析 使用单调队列在 O(n^2) 的时间内求出每个 n * n 正方形的最大值,最小值.然后就可以直接统计答案了. 横向有 a 个单调队列(代码中是 Q[1] ...
- bzoj 1047 : [HAOI2007]理想的正方形 单调队列dp
题目链接 1047: [HAOI2007]理想的正方形 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2369 Solved: 1266[Submi ...
- BZOJ 1047: [HAOI2007]理想的正方形( 单调队列 )
单调队列..先对每一行扫一次维护以每个点(x, y)为结尾的长度为n的最大最小值.然后再对每一列扫一次, 在之前的基础上维护(x, y)为结尾的长度为n的最大最小值. 时间复杂度O(ab) (话说还是 ...
- 【BZOJ】【1047】【HAOI2007】理想的正方形
DP/单调队列优化 一眼看上去就是DP 我想的naive的二维DP是酱紫滴: mx[i][j][k]表示以(i,j)为右下角的k*k的正方形区域内的最大值,mn[i][j][k]同理 mx[i][j] ...
- bzoj千题计划215:bzoj1047: [HAOI2007]理想的正方形
http://www.lydsy.com/JudgeOnline/problem.php?id=1047 先用单调队列求出每横着n个最大值 再在里面用单调队列求出每竖着n个的最大值 这样一个位置就代表 ...
- BZOJ1047: [HAOI2007]理想的正方形 [单调队列]
1047: [HAOI2007]理想的正方形 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2857 Solved: 1560[Submit][St ...
随机推荐
- Source Insight 中使用 AStyle 代码格式工具
Source Insight 中使用 AStyle 代码格式工具 彭会锋 2015-05-19 23:26:32 Source Insight是较好的代码阅读和编辑工具,不过source in ...
- oracle第一章
1.oracle对比sqlserver oracle sqlserver 数据文件.dbf 数据文件.mdf 控制文件.ctl 日志文件.log 日志文件.log 2.内置用户 1.sys ...
- tsne降维可视化
Python代码:准备训练样本的数据和标签:train_X4000.txt.train_y4000.txt 放于tsne.py当前目录.(具体t-SNE – Laurens van der Maate ...
- struts2视频学习笔记 09-10(struts2处理流程,指定多个struts配置文件)
课时9 Struts2的处理流程 StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它负责拦截由<url-pattern>/*</url- ...
- easyui 中重复加载两次url
之前一直在使用easyui中,忽视了官网上的小细节,类似于datagrid.combobox 等组件在使用的时候,它的数据加载方式分为两种: 官网中: ①在html中,比如: <table id ...
- iBatisSQL中prepend的问题
是前向声明还是后向声明? 官方文档那个给出:“the overridable SQL part that will be prepended to the statement”.可见是前向声明. -- ...
- MySQL 查看表结构
mysql查看表结构命令,如下: desc 表名; show columns from 表名; describe 表名; show create table 表名; use information_s ...
- Protocol Buffers in HBase
For early Hbase developers, it is often a nightmare to understand how the different modules speak am ...
- linux 执行php文件
/opt/php5/bin/php /home/Xcar/tag/interface/tag_api4hbase.php tag_export2file "/tmp/guo.php" ...
- LA 4123 - Glenbow Museum
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...