HDU - 1506 Largest Rectangle in a Histogram
2014-04-02 18:58
393 查看
题意:求最大的矩形面积
思路:单纯的搜索每个点能拓展的最大的矩形会超时,所以预处理,每个点的,到最左/右的最远的下标,那么矩形的面积就能求出来了,然后找最大值
思路:单纯的搜索每个点能拓展的最大的矩形会超时,所以预处理,每个点的,到最左/右的最远的下标,那么矩形的面积就能求出来了,然后找最大值
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 100010; long long a[MAXN],l[MAXN],r[MAXN]; int n,step,tmp; int main(){ while (scanf("%d",&n) != EOF && n){ a[0] = 0; for (int i = 1; i <= n; i++){ scanf("%lld",&a[i]); l[i] = r[i] = i; } for (int i = 1; i <= n; i++) while (l[i] > 1 && a[l[i]-1] >= a[i]) l[i] = l[l[i]-1]; for (int i = n; i >= 1; i--) while (r[i] < n && a[r[i]+1] >= a[i]) r[i] = r[r[i]+1]; long long ans = 0; for (int i = 1; i <= n; i++) ans = max(ans,(r[i]-l[i]+1)*a[i]); cout << ans << endl; } return 0; }
相关文章推荐
- Asp.net WebPages框架运行原理浅析{转}
- GCD和Block 使用
- Android——Intent和Intent过滤器
- java百问总结(四)
- Android 深入研究layout优化
- 矩阵求逆及行列式求值 - 未来再来添点更多矩阵计算功能
- 队列的顺序存储结构及其基本运算的实现
- 蝶雙飛雙
- S3C2440外部中断之按键中断
- Shell脚本编程快速上手
- IIS中查看W3P.exe进程对应的应用程序池的方法
- 队列的顺序存储结构及其基本运算的实现
- 队列的顺序存储结构及其基本运算的实现
- 值得发表,恕我直言。
- Windows 8之失败,电脑作为娱乐设备VS工作工具
- 类加载器---类加载器简介
- C++ delete operator做了什么事
- 1017: [JSOI2008]魔兽地图DotR - BZOJ
- Android开发之使用SharedPreferences实现QQ登陆的选项框记忆功能(源代码分享)
- MySQL常见错误提示