题目地址:Ural 1146 这题是求最大子矩阵和。方法是将二维转化一维。 首先用n*n的方法来确定矩阵的列。须要先进行预处理,仅仅对每行来说,转化成一维的前缀和,这样对列的确定仅仅须要前后两个指针来确定。仅仅须要用前缀和相减就可以得到。前后两个指针用n*n的枚举。 确定好了哪几列,那么再确定行的时
分类:
其他好文 时间:
2016-03-10 12:20:21
阅读次数:
164
题目链接 题意:给你一个n*n矩阵,求这个矩阵的最大子矩阵和 #include<iostream> #include<cstdio> #include<string.h> using namespace std; #define inf -0x3f3f3f3f int field[105][105]
分类:
其他好文 时间:
2016-02-29 16:10:45
阅读次数:
120
问:给定一个N*M的矩阵,其子矩阵有2^(M*N)个子矩阵,将子矩阵中的每个元素求和,求和最大的子矩阵。 我们可以枚举每个子矩阵,时间复杂度为0(2^(M*N)),该方法是不可行的。我们之前遇到过一个一维数组中最大子段和的问题。其状态转移方程为 if(b[i-1]>0) b[i]=b[i-1]+a[
分类:
其他好文 时间:
2016-02-13 14:33:49
阅读次数:
166
将原问题转化为求完全由1组成的最大子矩阵。挺经典的通过dp将n^3转化为n^2。 1 /* 4328 */ 2 #include <iostream> 3 #include <sstream> 4 #include <string> 5 #include <map> 6 #include <queu
分类:
其他好文 时间:
2016-02-10 23:24:03
阅读次数:
480
Description这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出的k个子矩阵不能相互重叠。Input第一行为n,m,k(1≤n≤100,1≤m≤2,1≤k≤10),接下来n行描述矩阵每行中的每个元素的分值(每个元素的分值的绝对值不超过32767)。Ou...
分类:
其他好文 时间:
2016-01-12 21:23:30
阅读次数:
153
一开始看到这道题,由于觉得m 2 #include 3 #include 4 #define INF 0x3fffffff 5 #define rep(i,j,k) for(int i = j; i <= k; i++) 6 #define maxn 120 7 using namespace .....
分类:
其他好文 时间:
2015-12-15 22:55:56
阅读次数:
686
真的好苦逼,这道神题,交了几十次都是70分,剩下的都TLE了,崩溃。 没办法,只能这样了。在网上看了别人的算法,大概思想是把三维的先压成两维,再把二维的弄成一维,这样就很容易了。 首先先累计从最底层到第i层的值,然后枚举i,j把第i层到第j层之间的值的和都算出来,就降成了二维,然后再去类似的...
分类:
其他好文 时间:
2015-12-08 22:22:17
阅读次数:
154
#includeusing namespace std;#define MAX 100010//用你自己的思维解决问题long long v[MAX],height[MAX],dp[MAX],maxn;int main(){ int n; while(cin>>n){ if...
分类:
其他好文 时间:
2015-11-30 22:12:26
阅读次数:
224
LA 3029求最大子矩阵问题,主要考虑枚举方法,直接枚举肯定是不行的,因为一个大矩阵的子矩阵个数是指数级的,因此应该考虑先进行枚举前的扫描工作。使用left,right,up数组分别记录从i,j位置可以向左,右,上扩展的最大距离,那么最终只需要枚举每一个方块即可使用(right-left)*up#...
分类:
其他好文 时间:
2015-10-28 20:49:19
阅读次数:
217
最大子矩阵题目:求一个矩阵中最大2*2矩阵(元素和最大)的和。如:1 2 3 0 42 3 4 5 11 1 5 3 0中最大的是4 55 3和为17输入:m*n的矩阵输出:该m*n矩阵的最大2*2子矩阵的和。例如输入:1 2 0 3 4 ; 2 3 4 5 1; 1 1 5 3 0输出:17分析:...
分类:
其他好文 时间:
2015-09-26 11:51:21
阅读次数:
226