题意:一个最大500*500的字符矩阵,求最大的两个相同的字符正方形。正方形可以有重叠部分但不能重合。
解法:首先是二分正方形的长度,然后判断某个长度存在时候计算字符矩阵的二维hash值,二维hash的方法是:
这样子拓展的hash算法可以O(1) 获取任意一个子矩阵的hash值。
代码:/*********************************...
分类:
其他好文 时间:
2014-11-17 19:36:30
阅读次数:
266
hoj2558,给定一个矩阵,返回最大的子矩阵的和。
思路(动态规划):
1.读入矩阵的同时计算部分和矩阵
2.枚举矩阵的行上下边界,固定了行上下边界后,
根据部分和矩阵在O(1)时间内得到同一列元素的和,转化为1维数组的情况
3.按照一维数组的情况,求最大子数组和的思路是:
可以从后往前计算,每次先算以当前元素A[i]为开头的最大和start,
再将start与当前A[i+1:n]...
分类:
其他好文 时间:
2014-11-13 22:36:50
阅读次数:
305
NICE 的DP 题,明白了题解真是不错。Time Limit:10 SecMemory Limit:162 MBSubmit:1228Solved:622[Submit][Status]Description这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出...
分类:
其他好文 时间:
2014-11-11 22:29:21
阅读次数:
304
题目大意:求正方形回文子矩阵数量(即左右对称、上下对称的正方形子矩阵)
正解是Manacher……但是Hash+二分是能卡过去的0.0 我太丧病了0.0
首先为了避免边长奇偶性带来的WT要把矩阵扩大二倍 然后样例就变成了这样:
00000000000
04020404040
00000000000
03010404030
00000000000
03050303030
00000...
分类:
其他好文 时间:
2014-11-10 15:34:05
阅读次数:
249
题目意思:
给出一个矩阵。求出和最大的子矩阵,在解决这个问题的之前,首先看一下这个问题的一维问题,给出一个序列求最大子序列。满足ij的和。
题目分析:
对于一维问题,有很多的解决方法,当然也对应不同的时间和空间复杂度。有暴力,优化暴力,贪心,动态规划等解法,由于这里此题的二维问题要用到动态规划,这里只给出动态规划算法。对于二维问题只需要转化为一维的问题,在用动态规划方法解决问题。
一维动归...
分类:
其他好文 时间:
2014-11-09 12:39:35
阅读次数:
153
题目描述Description在一个0,1方阵中找出其中最大的全0子矩阵,所谓最大是指O的个数最多。思路:这个题最朴素的n^6的算法,超时美美的。。。然后想优化,从一个点向上方、左方、右方扩展,首先更新这个点向上能有多少个0h0,然后找左右h比h0大的作为左右边界,然后计算这个矩形的面积,最后输出最...
分类:
其他好文 时间:
2014-11-05 16:33:08
阅读次数:
132
对于某一个矩阵A有以下的规定:A(m,n)提取矩阵的m行和n列;A(:,n)提取矩阵的n列;A(m,:)提取矩阵的m行;$A(m_1:m_2,n_1:n_2)$提取矩阵$m_1$到$m_2$行,$n_1$到$n_2$列的所有的元素(子块);A(m:end,n)提取矩阵的m行到最后一行和第n列的子块;...
分类:
其他好文 时间:
2014-11-04 18:51:55
阅读次数:
372
题目大意:有个字母矩阵,包含字母"a、b、c、w、x、y、z",其中,w能变为"a、b",
x能变为"b、c",y能变为"a、c",z能变为"a、b、c"。问能构成的最大字母完全一样的子
矩阵面积为多大?
思路:和HDU1505、HDU1506一样的思路,其中a[i][j]表示转换为字母a后以第i行为底,
第j列上方连续空闲位置的高度。b[i][j]表示字母b……,c[i][j]表示字母c……
遍历计算出该点向左右两边延伸的左右边界,从而计算出面积,最终比较计算出最大面积。...
分类:
其他好文 时间:
2014-11-04 17:20:19
阅读次数:
230
最大和
时间限制:1000 ms | 内存限制:65535 KB
难度:5
描述
给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵。
例子:
0 -2 -7 0
9
2 -6 2
-4
1 -4 1
-1 8 0 -2
其最大子矩阵为:
9
...
分类:
其他好文 时间:
2014-11-03 22:33:08
阅读次数:
232
# include
# include
# include
# include
using namespace std;
__int64 a[100010],l[100010],r[100010];///l[i]左边连续大于等于a[i]的下标,r[i]右边连续大于等于a[i]的下标,所以对于a[i]的矩形面积为(l[i]-r[i]+1)*a[i];
int main()
{
__i...
分类:
其他好文 时间:
2014-11-02 10:51:51
阅读次数:
174