矩阵求和及Kadane算法

今天的一道题目:

https://leetcode.com/problems/max-sum-of-sub-matrix-no-larger-than-k/

有难度。这一类题目很有代表性。

搜到这个网址有针对一维数组的求和的按照时间复杂度一步步优化的过程,讲的很不错:

http://www.cnblogs.com/en-heng/p/3970231.html

然后针对题目中所提到的需要限制最大和不超过k的方式,也有方法通过set集合以及lower_bound或者upper_bound来处理,

整个题目解决的方案可以参考这个网址:

https://leetcode.com/discuss/109749/accepted-c-codes-with-explanation-and-references

要多思考多总结。

时间: 2024-10-31 05:04:31

矩阵求和及Kadane算法的相关文章

算法问题拓展——kadane算法及其二维数组的扩展

上次完成最大子序和算是对这类算法的入门,现在想要对其进行加深学习. 最大子数组的问题里对我印象最深的就是动态规划的解决方法——“解其不同部分(即子问题),再根据子问题的解以得出原问题的”.这种解决方法十分常用,而其在一维数组中的总结以及最优解就是Kadane算法. Kadane算法 //C++伪代码int kadane(){ int ans = n[0]; dp[0] = n[0]; for(int i = 1;i < strlen(n);i++){ dp[i] = Max(n[i],dp[i-

矩阵乘法的Strassen算法详解

题目描述 请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法. 思路分析 根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵B的列数和另一个矩阵A的行数相等时才能定义.如A是m×n矩阵和B是n×p矩阵,它们的乘积AB是一个m×p矩阵,它的一个元素其中 1 ≤ i ≤ m, 1 ≤ j ≤ p. 值得一提的是,矩阵乘法满足结合律和分配率,但并不满足交换律,如下图所示的这个例子,两个矩阵交换相乘后,结果变了: 下面咱们来具体解决这个矩阵相乘的问题. 解法一.暴力解法 其实,通过前面的分析

矩阵求和--重载运算符

C++习题 矩阵求和--重载运算符 [Submit][Status][Web Board] Description 有两个矩阵a和b,均为2行3列.求两个矩阵之和.重载运算符"+",使之能用于矩阵相加(如c=a+b). 重载流插入运算符"<<"和流提取运算符">>",使之能用于该矩阵的输入和输出. Input 两个2行3列矩阵 Output 矩阵之和 Sample Input 1 2 34 5 67 8 91 2 3 Sa

矩阵求和

矩阵求和 难度级别:A: 编程语言:不限:运行时间限制:3000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 矩阵求和 输入 第一行n和m,表示行数和列数 接下来n行表示矩阵 再来一行一个整数q,表示询问个数 接下来q行,每行四个整数x1,y1,x2,y2表示左上右下的坐标 输出 对于每个询问输出一个整数表示该矩阵范围内的整数和 输入示例 5 5 1 2 5 4 1 1 1 7 6 8 8 7 9 5 2 4 4 4 1 8 5 10 11 13 7 3 2

poj 3233 Matrix Power Series(等比矩阵求和)

http://poj.org/problem?id=3233 ps转: 用二分方法求等比数列前n项和:即 原理: (1)若n==0 (2)若n%2==0     (3)若n%2==1 代码如下: LL sum(LL p,LL n) { if(n==0) return 1; if(n&1) return (1+pow(p,(n>>1)+1))*sum(p,n>>1); else return (1+pow(p,(n>>1)+1))*sum(p,(n-1)>&

poj 1195:Mobile phones(二维树状数组,矩阵求和)

Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14489   Accepted: 6735 Description Suppose that the fourth generation mobile phone base stations in the Tampere area operate as follows. The area is divided into squares. The

poj 1195:Mobile phones(二维线段树,矩阵求和,经典题)

Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14391   Accepted: 6685 Description Suppose that the fourth generation mobile phone base stations in the Tampere area operate as follows. The area is divided into squares. The

矩阵乘法的Strassen算法及时间复杂度

[问题]普通方法计算矩阵相乘,时间复杂度为O(n^3),请设计优化算法. [Strassen算法] [时间复杂度]

hdu 1588(Fibonacci矩阵求和)

题目的大意就是求等差数列对应的Fibonacci数值的和,容易知道Fibonacci对应的矩阵为[1,1,1,0],因为题目中f[0]=0,f[1]=1,所以推出最后结果f[n]=(A^n-1).a,所以 f(g(i))= f(k*i+b)= (A^(k*i+b-1)).a,i从 0取到 n-1,取出公因式 A^(b-1)(因为矩阵满足分配率),然后所求结果可化为 A^(b-1) * (A^0 + A^k + A^2k +....+ A^(n-1)k),化到这里后难点就是求和了,一开始我尝试暴力