两次单调队列求出每个子矩阵的最小值,区间减法求出每个子矩阵的和,然后丢到优先队列里跑出来就好了。
写锉了,加了读入挂才过。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment(linker,...
分类:
其他好文 时间:
2014-10-30 11:47:20
阅读次数:
344
1176: [Balkan2007]MokiaTime Limit:30 SecMemory Limit:162 MBSubmit:436Solved:207[Submit][Status]Description维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值...
分类:
其他好文 时间:
2014-10-25 17:11:24
阅读次数:
364
题目大意:给定一个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
题意: 给一个矩阵,每次查询一个子矩阵内的最大最小值,然后更新子矩阵中心点为(Max+Min)/2.解法: 由于是矩阵,且要求区间最大最小和更新单点,很容易想到二维的线段树,可是因为之前没写过二维的线段树,所以没跳出来。后来熟悉了一下,原来很多细节地方都没有考虑到。这里build,update,qu...
分类:
其他好文 时间:
2014-10-24 01:35:48
阅读次数:
227
题意:一个V * U的矩阵,每个元素有一个高度Hxy,问长不超过100,且最高值与最低值的差不超过C的子矩阵的最大面积(1
题目链接:http://poj.org/problem?id=1156
——>>枚举子矩阵的左右宽度(保证枚举宽度不超过100,同时记录所枚举左右区间的每行的最大最小值),再枚举子矩阵的上下宽度(用单调队列优化判C)。
#include
#include
#inc...
分类:
其他好文 时间:
2014-10-22 14:39:19
阅读次数:
175
题意:给一个矩阵,里面有正负数,求子矩阵和的最大值#include #include #include #include using namespace std;int s[105][105],dp[105],n,temp[105];int main(){ // freopen("in.txt...
分类:
其他好文 时间:
2014-10-10 00:13:21
阅读次数:
342
题目地址:HDU 1559
构造二维前缀和矩阵。即矩阵上的点a[i][j]表示左上方的点为(0,0),右下方的点为(i,j)的矩阵的和。然后枚举每个矩阵的左上方的点,由于矩阵的长和宽是固定的,那么这个矩阵实际上也已经固定了。此时这个矩阵的和用公式:
sum=a[i+x-1][j+y-1]-a[i+x-1][j-1]-a[i-1][j+y-1]+a[i-1][j-1];
取最大值就可以了。
...
分类:
其他好文 时间:
2014-10-06 21:26:01
阅读次数:
174
题目地址:Ural 1146
这题是求最大子矩阵和。方法是将二维转化一维。
首先用n*n的方法来确定矩阵的列。需要先进行预处理,只对每行来说,转化成一维的前缀和,这样对列的确定只需要前后两个指针来确定,只需要用前缀和相减即可得到。前后两个指针用n*n的枚举。
确定好了哪几列,那么再确定行的时候就转化成了一维的最大连续子序列的和。再来一次O(n)的枚举就可以。
这样,总复杂就变成了O(n^3...
分类:
其他好文 时间:
2014-10-03 22:40:35
阅读次数:
205
题意:一个N * N的矩阵,求子矩阵的最大和(N
题目链接:http://poj.org/problem?id=1050
——>>将二维压缩为一维,对一维进行dp求解。
将二维压缩成一维:
1、第1行
2、第2行加第1行
3、第3行加第2行加第1行
……
N、第N行加第N-1行加……加第1行
1、第2行
2、第3行加第2行
……
1、第N行
对于一维情况,设dp[i]表...
分类:
其他好文 时间:
2014-10-03 18:00:24
阅读次数:
220
UVA11992 - Fast Matrix Operations(线段树区间修改)
题目链接
题目大意:给你个r*c的矩阵,初始化为0。
然后给你三种操作:
1 x1, y1, x2, y2, v 把由x1,y1, x2, y2构成的子矩阵里的每个元素都加上v。
2 x1, y1, x2, y2, v 把这个子矩阵的每个元素都修改为v。
3 x1, y1, x2, y2 查询...
分类:
其他好文 时间:
2014-10-02 14:51:43
阅读次数:
244