首页 > [SCOI2005]最大子矩阵
头像 Kur1su
发表于 2020-06-09 08:17:57
争取每天早起一小时写一题emmm Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出的k个子矩阵 不能相互重叠。 Solution 注意到 其实就是两列数字求最大连续子段和的变形我们可以枚举当前第一列所处位置 i, 第二列所处位置 j, 展开全文
头像 ZeRoLJ42
发表于 2020-06-05 13:16:37
题意: 给定一个 的矩阵,从中选出 个互不重叠的子矩阵,使得总分值最大。 其中 。 题解: 注意到 。 先考虑 的情况,是一个比较经典的最大 子段和问题,可以用 求解,复杂度为 。具体做法这里就不说了。 再考虑 的情况,由 的求解做法接着往下考虑。子矩阵可以是第一列的连续行,或者第二列 展开全文
头像 zzugzx
发表于 2020-06-05 13:07:30
题目链接 题意:题解: AC代码 /* Author:zzugzx Lang:C++ Blog:blog.csdn.net/qq_43756519 */ #include<bits/stdc++.h> using namespace std; #define fi 展开全文
头像 JQK2020
发表于 2020-06-05 18:56:47
题目描述这里有一个nm的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出的k个子矩阵 不能相互重叠。输入描述:第一行为n,m,k(1 ≤ n ≤ 100,1 ≤ m ≤ 2,1 ≤ k ≤ 10),接下来n行描述矩阵每行中的每个元素的分值(每个元素的分值的绝对值不超过3276 展开全文
头像 wxyww
发表于 2020-06-05 22:10:05
solution 注意到。 考虑时如何做。 令表示前i个位置选出了j段的最大价值。转移就是 同样的方法我们可以类比出时的做法。 令表示第1列选到了第i个数,第二列选到了第j个数,总共选了k个矩阵的最大价值。 转移就枚举一下最后放的一个矩阵,如果最后一个矩阵放在了第1列,那就从转移过来。如果最后一个矩 展开全文
头像 sunrise__sunrise
发表于 2020-06-06 09:15:57
多唯DP Code #pragma GCC target(&quot;avx,sse2,sse3,sse4,popcnt&quot;) #pragma GCC optimize(&quot;O2,O3,Ofast,inline,unroll-all-loops, 展开全文
头像 CoolGuang!
发表于 2020-06-08 16:08:48
好久没更新牛客的博客了更新一下下 链接:https://ac.nowcoder.com/acm/problem/20242来源:牛客网 [SCOI2005]最大子矩阵时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: 展开全文
头像 DaMing
发表于 2020-06-07 10:42:11
一开始思路错了,想着把k当成1 求了一个最大子矩阵然后对最大子矩阵所在的一行用最大k段子序列,后来发现思路错了,因为这样所求的子矩阵的终点行一定都相同了正确的思路:因为m(列)是1&amp;amp;amp;lt;=m&amp;amp;amp;lt;=2,只有两种情况,对于m==1时候 展开全文
头像 江三
发表于 2020-06-11 10:37:33
一.题意 n * m 的矩阵分成 k 组互不重叠的矩阵,求最大的子矩阵和。 二.题解 特别注意到的是 m 的值为 1 或者 2,所以可以由比较简单的方法写出。考虑 代表第一列前 i 个元素和第二列前 j 个元素组成 k 个矩阵的最大值。有以下的递推方程: 由前一状态推出, 枚举第一列, 枚举第 展开全文
头像 dakjhbsd
发表于 2020-06-06 16:18:24
注意到,考虑分类讨论。当 时 ,设为前个数取了个子矩阵的最大价值,数组为,则有 当 时,设为在第一列前个数,第二列前个数,共有个子矩阵的价值,则有 CODE #include <algorithm> #include <cctype> #include <cmath& 展开全文

等你来战

查看全部