博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷p2216 多次单调队列,扫描矩阵中的最大值减去最小值最的固定大小子矩阵...
阅读量:5246 次
发布时间:2019-06-14

本文共 2260 字,大约阅读时间需要 7 分钟。

#include 
#include
#include
using namespace std;int a,b,n;int m[1005][1005],q[7][1005][2005];int head[7][1005],tail[7][1005],l[5][1005],r[3][1005];int main(){ while(~scanf("%d%d%d",&a,&b,&n)){ int i,j,k; for(i=1;i<=a;++i){ for(j=1;j<=b;++j){ scanf("%d",&m[i][j]); } } for(i=1;i<=b;++i) { l[2][i]=r[2][i]=1; } memset(head,0,sizeof(head)); memset(tail,0,sizeof(tail)); int ans=~(0u)>>1; for(i=1;i<=a-n+1;++i){ int row=i; l[1][i]=r[1][i]=1; while(r[1][i]<=b){ while(r[1][i]-l[1][i]+1<=n){ int col=r[1][i]; while(r[2][col]-l[2][col]+1<=n){ int t=r[2][col]; while(head[3][col]!=tail[3][col]&&m[q[3][col][tail[3][col]-1]][col]<=m[t][col]) tail[3][col]--; q[3][col][tail[3][col]++]=t; while(head[4][col]!=tail[4][col]&&m[q[4][col][tail[4][col]-1]][col]>=m[t][col]) tail[4][col]--; q[4][col][tail[4][col]++]=t; r[2][col]++; } while(head[1][row]!=tail[1][row]&&head[5][row]!=tail[5][row]&&m[q[5][row][tail[5][row]-1]][q[1][row][tail[1][row]-1]]<=m[q[3][col][head[3][col]]][col]) { tail[1][row]--,tail[5][row]--; } q[1][row][tail[1][row]++]=col,q[5][row][tail[5][row]++]=q[3][col][head[3][col]]; while(head[2][row]!=tail[2][row]&&head[6][row]!=tail[6][row]&&m[q[6][row][tail[6][row]-1]][q[2][row][tail[2][row]-1]]>=m[q[4][col][head[4][col]]][col]) { tail[2][row]--,tail[6][row]--; } q[2][row][tail[2][row]++]=col,q[6][row][tail[6][row]++]=q[4][col][head[4][col]]; l[2][col]++; while(head[3][col]!=tail[3][col]&&q[3][col][head[3][col]]

竖着跑一遍单调队列,跑完竖的所有列,再对所有列的最值跑一遍行的

转载于:https://www.cnblogs.com/linkzijun/p/6574645.html

你可能感兴趣的文章
设计模式之桥接模式(Bridge)
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
【codevs1033】 蚯蚓的游戏问题
查看>>
【程序执行原理】
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
PHP 导出 Excell
查看>>
Java基础教程——网络基础知识
查看>>
Kruskal基础最小生成树
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>
Java内部类详解
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
图论-次短路求法
查看>>