传送门

1.先弄个单调队列求出每一行的区间为n的最大值最小值。

2.然后再搞个单调队列求1所求出的结果的区间为n的最大值最小值

3.最后扫一遍就行

懒得画图,自己体会吧。

——代码

 #include <cstdio>
#include <iostream> using namespace std; const int MAXN = ;
int a, b, n, h, t;
long long c[MAXN][MAXN], q[MAXN], max1[MAXN][MAXN], min1[MAXN][MAXN], max2[MAXN][MAXN], min2[MAXN][MAXN], ans = ; inline void work1(int k)
{
int i, j;
h = , t = ;
for(i = ; i <= b; i++)
{
while(h <= t && c[k][q[t]] > c[k][i]) t--;
q[++t] = i;
while(h <= t && q[h] <= i - n) h++;
min1[k][i] = c[k][q[h]];
}
h = ; t = ;
for(i = ; i <= b; i++)
{
while(h <= t && c[k][q[t]] < c[k][i]) t--;
q[++t] = i;
while(h <= t && q[h] <= i - n) h++;
max1[k][i] = c[k][q[h]];
}
} inline void work2(int k)
{
int i, j;
h = , t = ;
for(i = ; i <= a; i++)
{
while(h <= t && min1[q[t]][k] > min1[i][k]) t--;
q[++t] = i;
while(h <= t && q[h] <= i - n) h++;
min2[i][k] = min1[q[h]][k];
}
h = ; t = ;
for(i = ; i <= a; i++)
{
while(h <= t && max1[q[t]][k] < max1[i][k]) t--;
q[++t] = i;
while(h <= t && q[h] <= i - n) h++;
max2[i][k] = max1[q[h]][k];
}
} int main()
{
int i, j;
scanf("%d %d %d", &a, &b, &n);
for(i = ; i <= a; i++)
for(j = ; j <= b; j++)
scanf("%lld", &c[i][j]);
for(i = ; i <= a; i++) work1(i);
for(i = ; i <= b; i++) work2(i);
for(i = n; i <= a; i++)
for(j = n; j <= b; j++)
ans = min(ans, max2[i][j] - min2[i][j]);
printf("%lld", ans);
return ;
}

最新文章

  1. BZOJ4583 : 购物
  2. comebotree树
  3. javascript 简单加解密
  4. 错误信息:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。
  5. 解决myeclipse过期问题
  6. 安装Visual Studio 2013 中文社区版
  7. linux安装GraphicsMagick
  8. Constraint where both columns cannot be null, but one can
  9. servlet获取request数据的乱码解决
  10. RabittMQ安装和Erlang安装教程
  11. 原生WebGL绘制3个点
  12. Mockito学习(zz)
  13. springmvc 笔记一
  14. Linux内核分析第一周总结
  15. ballerina 学习三 根据swagger 以及protobuf 生成code
  16. 代码编写规范Asp.Net(c#)
  17. Spark SQL原理和实现--王家林老师
  18. \\.\Global\vmx86: 系统找不到指定的文件
  19. 7 tftp
  20. eclipse集成JBPM

热门文章

  1. [转]Linq 如何实现 in 与 not in
  2. laravel oauth2.0 文件上传报错
  3. jQuery选择器之可见性选择器
  4. ubuntu下安装apcu扩展
  5. upupw nginx服务器 rewrite设置
  6. 洛谷 P1361 小猫爬山
  7. 目录下 shift 右键菜单 打开cmd 或者在 地址栏输入cmd 回车进入cmd
  8. java web开发中常用的协议的使用和java-web 常见的缓冲技术
  9. Wow64
  10. QT+lambda 表达式