题目:1、给定一数组,求该数组的最大子数组和;2、给定一矩阵,求该矩阵的最大子矩阵和;思路:1、求数组的最大子数组和很简单,可以通过动态规划来实现,假设数组为arr:假设dp[i]表示从0到i的数组的最大子数组和,那么递推关系式表示为:dp[0]=arr[0];dp[i]=dp[i-1]>0?dp[...
分类:
编程语言 时间:
2015-09-17 23:18:29
阅读次数:
260
题意:有一个n*m的矩阵,其中部分格子已经涂黑,部分涂白,要求为其他格子也上黑/白色,问有多少种涂法可以满足一下要求: (1)任意2*2的子矩阵不可以同色。 (2)所有格子必须上色。 (3)只能有两个连通分量(即1黑1白)。 注:1 2 #include 3 #include 4 ...
分类:
其他好文 时间:
2015-09-12 17:35:18
阅读次数:
394
构造子集 R构造子集的操作功能强大而且速度快。精通构造子集者可以用简洁的方式表达复杂的操作,很少有其他语言能做到这一点。构造子集学习起来比较困难,因为需要掌握一系列相互关联的概念:3种构造子集操作符。6类子集。不同对象(比如向量、列表、因子、矩阵、数据框)行为上的重要不同。联合使用构造子集与赋值。....
分类:
其他好文 时间:
2015-09-11 10:31:56
阅读次数:
236
题意:对一个矩阵进行子矩阵操作。元素对多有1e6个,树套树不好开(我不会),把二维坐标化成一维的,一个子矩阵操作分解成多条线段的操作。一次操作的复杂度是RlogC,很容易找到极端的数据(OJ上实测没有),如果判断一下然后建树复杂度是min(RlogC,ClogR)。代码中结点没有保存l和r,而且询问...
分类:
其他好文 时间:
2015-09-08 00:23:41
阅读次数:
168
题意:给一个矩阵,然后Q个询问,每个询问有四个数,分别代表询问的子矩阵的左上角和右下角,然后找出子矩阵的最大值输出,然后再把这个值与子矩阵的四个角的值比较,如果有至少一个等于这个最大值就输出“yes”,否则输出“no”。#include #include #include #include #inc...
分类:
其他好文 时间:
2015-09-05 12:19:10
阅读次数:
149
分析我们已经解决了一维的问题(基础篇中的最大子段和问题),现在变成二维了,我们看看能不能把这个问题转化为一维的问题。最后子矩阵一定是在某两行之间的。假设我们认为子矩阵在第i行和第j列之间,我们如何得到i和j呢,对,枚举。 枚举所有1<=i<=j<=M,表示最终子矩阵选取的行范围。我们把每一列第i行到...
分类:
其他好文 时间:
2015-09-01 10:39:39
阅读次数:
309
最大子矩阵和最大连续子序列十分类似。对于矩阵,可以将他的一列相加,然后成为一行,就是最大连续子序列了。#include#include#define maxn 105int map[maxn][maxn],f[maxn];int max(int x,int y){ return x>y?x:y...
分类:
其他好文 时间:
2015-08-30 15:33:02
阅读次数:
117
传送门:点击打开链接
题意:告诉你矩阵大小是n*m,要求矩阵中不能有2*2的白色子矩阵或者黑色子矩阵,最后种类数模P
思路:如果不是大数,这道题还是非常有意思的。。对于专门卡C++的题目也是醉了...因为n太大了,而m最大也只有5,很明显是大数上的快速矩阵幂。
问题是如何构造出矩阵出来,之前做过骨牌的题目,就是利用DFS来构造的,感觉这道题在思路上是一样的,同样也是利用DFS先构造出矩阵
...
分类:
其他好文 时间:
2015-08-25 19:35:35
阅读次数:
129
/**
* 功能:给定M*N矩阵,每一行、每一列都按升序排列,找出某元素。
*/
两种方法:
方法一:
/**
* 思路:若列的末端大于x,那么x位于该列的左边;若行的开头小于x,那么x位于列的下边。从矩阵中的子矩阵中查找元素。
* @param matrix
* @param elem
* @return
*/
public static b...
分类:
编程语言 时间:
2015-08-21 11:20:43
阅读次数:
298
http://acm.hdu.edu.cn/showproblem.php?pid=1081题目大意:求一个矩阵之内最大的一个子矩阵的和。子矩阵的和表示的是该矩阵内所有元素的和。分析:map[i][j]数组上存的是第i行前j列上的和第k行上,dp[k][i] = max(dp[k][i-1]+map...
分类:
其他好文 时间:
2015-08-21 11:08:23
阅读次数:
132