题目描述:
到底是个资本家,Farmer John想通过买更多的奶牛来扩大它的生意。它需要给奶牛建造一个新的牛棚。 FJ买了一个矩形的R(1 <= R <= 3000)行C(1 <= C <= 3000)列的牧场。不幸的是,他发现某些1 x 1的区域被损坏了,所以它不可能在把整个牧场建造成牛棚了。
FJ数了一下,发现有P(1 <= p <= 30000)个1 x 1的损坏区域并且请你帮助他找到不包含损坏区域的面积最大的牛棚。 * (对同一个损坏区域可能有多次描述——aLeN.PN注)
输入:
第1行: 三个空格隔开的整数 R, C, and P.
第2..P+1行: 每行包含两个空格隔开的整数, r和c, 给出一个损坏区域的行号和列号.
输出:
第1行: 牛棚的最大可能面积
样例输入:
3 4 2
1 3
2 1
样例输出:
6
解题思路:
这一道题是单调栈再加上一个预处理。
预处理为在i行的起点从上往下(其实从下往上也可以,只不过太怪)寻找最长宽为1的最长矩形。
这样我们就可以用单调栈的优化DP了。
如果还没对这一道(https://www.luogu.org/problemnew/show/SP1805)就......
代码实现:
#include<cstdio>
#include<iostream>
#include<cstring>