南昌理工学院ACM集训队
题目链接P1719
这题的做题方法就是压缩二维数组,使其变为一维数组。
我们可以将上一行的值带到下一行,然后一直加到最后,以样例来模拟可以得出:
- 第一行 0 -2 -7 0
- 第二行 9 0 -13 2
- 第三行 5 1 -17 3
- 第四行 4 9 -17 1
由此我们可以看出样例所有的矩阵都可以从这四行来推出,比如样例的答案就是第四行减去第一行得出 4 11 -7 1,其中的每一个值都代表第四行到第二行每一列的值,每个子段和就代表了一个矩形的值,然后我们就直要求出最大子段和就可以得出结果,这里我们不难看出最大子段是4+11=15。
我们直接上代码,伪代码我不会(づ ̄ 3 ̄)づ。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
#include<cstring>
#include<math.h>
#include <queue>
#include<cstdlib>
#define ll long long
using namespace std;
const int maxt = 3e5