解题思路
设第 i 行的和为 rowi,第 j 列的和为 colj。
两次操作选择的线只有 3 种情况:
1、两次都选行
收益是两个不同行的行和之和;如果再次选择同一行,第二次收益为 0,所以也要考虑只取最大行和。
P4994.第2题-矩阵两次取线最大收益
题目内容
给定一个n×m 的整数矩阵A。你需要进行两次操作:每次选择一行或一列,将所选行(或列)上的所有元素取走并累加到总和中。被取走后,该行(或该列)上所有被选择到的元素的值立即变为 0,在后续操作中按 0 计。求能够获得的最大总和。
更形式化地,设两次操作依次选择的线为L1,L2。
- 第一次操作的收益为L1上元素之和;
- 将L1上元素全部置为0后,第二次操作的收益为此时L2 上元素之和;
- 答案为两次收益之和。
输入描述
输入包含多组测试数据。
- 第一行包含整数 T (1≤T≤105)表示测试组数。
- 每组数据描述如下:
- 第一行包含两个整数 n,m (1≤n,m, n×m≤2×105);
- 接下来n行,每行包含 m 个整数,表示矩阵 A 的元素 Ai,j (−109≤Ai,j≤109)。
- 保证所有测试中 n×m的总和不超过 5×105。
输出描述
对于每组测试数据,输出一行一个整数,表示进行两次操作可以获得的最大总和。
样例1
输入
3
3 3
1 2 3
4 5 6
7 8 9
2 3
-1 10 -3
10 1 5
1 4
5 -1 4 -2
输出
39
26
9
说明
- 样例一:选择第 2行与第 3行,总和为15+24=39,为最优。
- 样例二:第一次选择第 2 行,收益为 10+1+5=16;将该行置零后再选择第2 列,此时该列仅剩 (1,2)位置的 10,收益 10。合计 16+10=26。
- 样例三:仅选择第一列和第三列,总和为 5+4=9。