【题目大意】 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 【思路】 裸的二维单调队列。二维单调队列的思路其实很简单: (1)对于每一行维护两个宽度为n的滑动窗口记录单行中的min和max,和POJ2823一个道理。此时相当于把n个 ...
分类:
其他好文 时间:
2016-05-02 00:33:18
阅读次数:
180
读入以后想枚举j,用个maxv[i][j]数组表示在第i行,从第j个开始n个的最大值。 后来再枚举i,记录最大值。 最小值同理。 复杂度O(abn)。 #include #include #include using namespace std; const int maxn = 1000; con... ...
分类:
其他好文 时间:
2016-04-11 22:15:38
阅读次数:
164
1047: [HAOI2007]理想的正方形Time Limit:10 SecMemory Limit:162 MBSubmit:2230Solved:1188[Submit][Status][Discuss]Description有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,...
分类:
其他好文 时间:
2015-11-24 22:03:32
阅读次数:
233
单调队列好东西。。。。先跑第一遍处理出每行以(x,y)结尾长度为n的一段的max与min再跑一遍处理出每列以(x,y)结尾长度为n的一段的max的max以及min的min 1 #include 2 #define lowbit(a) ((a)&(-(a))) 3 #define clr(a,x) m...
分类:
其他好文 时间:
2015-08-19 16:26:14
阅读次数:
145
bzoj1047 理想的正方形题目大意:求a*b的矩阵中一个n*n的子矩阵,使得子矩阵的最大值和最小值的差最小。思路:一开始认为能用二维线段树a掉,但lcomyn大神写了一下,结果T了,于是就寻找新的写法。借鉴了斜率优化的思路,发现单调队列可以优越的做到O(ab)的求出整个矩阵中每个点左面延伸n位的...
分类:
其他好文 时间:
2015-07-04 19:47:22
阅读次数:
136
先把整个矩阵处理成b[n][m-K+1]、c[n][m-K+1]大小的两个矩阵,分别存储每行每K个数中的最大、最小值,然后再通过b、c处理出d、e分别表示K*K大小的子矩阵中的最大、最小值即可。单调队列暴力。#include#includeusing namespace std;#define N ...
分类:
其他好文 时间:
2015-03-07 10:07:05
阅读次数:
637
题目大意:给定一个a*b的矩阵,求一个n*n的子矩阵,使矩阵中的最大值与最小值之差最小
对于每行维护一个单调递减的队列,再弄一个竖着的队列,维护n个格子之内的最大值即可
两遍统计出最大值和最小值 然后得到ans即可
#include
#include
#include
#include
#define M 1010
using namespace std;
struct abcd{
pai...
分类:
其他好文 时间:
2014-10-24 16:29:26
阅读次数:
193
昨天刷水累死蒟蒻了。。。每天一到题解总还是要写的。。。于是就是这个了!二维RMQ,第一反应是二维线段树,妥妥MLE + TLE想起来去年市选小题有一道一模一样的,我当时就是写二维线段树,然后MLE0分、、、真是悲剧发现长度是固定的为n,和动态规划的某个叫单调队列的优化很像:先求出每一列的某个点向下n...
分类:
其他好文 时间:
2014-10-20 22:46:03
阅读次数:
242