A Rectangular Barn 矩形牛棚
到底是个资本家,Farmer John 想通过买更多的奶牛来扩大它的生意.它需要给奶牛建造一个新的牛棚.FJ 买了一个矩形的R(1 <= R <= 3000)行C(1 <= C <= 3000)列的牧场.不幸的是,他发现某些1 x 1的区域被损坏了,所以它不可能在把整个牧场建造成牛棚了.FJ 数了一下,发现有P(1 <= p <= 30000)个1 x 1 的损坏区域并且请你帮助他找到不包含损坏区域的面积最大的牛棚.
PROGRAM NAME: rectbarn
INPUT FORMAT
• 第1 行: 三个空格隔开的整数 R, C, and P.
• 第2..P+1 行: 每行包含两个空格隔开的整数, r 和c, 给出一个损坏区域的行号和列号.
SAMPLE INPUT (file rectbarn.in)
3 4 2
1 3
2 1
OUTPUT FORMAT
1 行: 牛棚的最大可能面积
SAMPLE OUTPUT (file rectbarn.out)
6
分析:这题求最大的未损坏矩形区域面积,可以用dp解决。
在每个点记录其向上最大距离h,以及满足h的情况下,向左和向右的最大距离l和r(包含该点)
则这个点向上的矩形面积为:h*(l+r-1)
注意空间问题:不能超过16MB,要用滚动数组
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define inf 2147483647
#define mp make_pair
#d