hdu1506 Largest Rectangle in a Histogram(DP)
来源:互联网 发布:万网如何设置三级域名 编辑:程序博客网 时间:2024/06/18 16:36
思路:l[i]表示比a[i]大的数连续的最左边的位置 r[i]表示比a[i]大的数连续的最右边的位置
#include<bits\stdc++.h>using namespace std;const int maxn = 100010;#define LL long longLL a[maxn],l[maxn],r[maxn];int main(){int n; while(scanf("%d",&n) && n){for (int i = 1;i<=n;i++)scanf("%lld",&a[i]);l[1]=1;r[n]=n;for (int i = 2;i<=n;i++){int t = i;while(t>1 && a[i]<=a[t-1])t=l[t-1];l[i]=t;}for (int i = n-1;i>=1;i--){int t = i;while(t<n && a[i]<=a[t+1])t=r[t+1];r[i]=t;}LL ans = 0;for (int i = 1;i<=n;i++){LL s = (r[i]-l[i]+1)*a[i];ans = max(ans,s);}printf("%lld\n",ans);}}
Description
A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different heights. For example, the figure on the left shows the histogram that consists of rectangles with the heights 2, 1, 4, 5, 1, 3, 3, measured in units where 1 is the width of the rectangles:
![](http://7xjob4.com1.z0.glb.clouddn.com/eb5960f09a1245ebe970bb7af6446b63)
Usually, histograms are used to represent discrete distributions, e.g., the frequencies of characters in texts. Note that the order of the rectangles, i.e., their heights, is important. Calculate the area of the largest rectangle in a histogram that is aligned at the common base line, too. The figure on the right shows the largest aligned rectangle for the depicted histogram.
Usually, histograms are used to represent discrete distributions, e.g., the frequencies of characters in texts. Note that the order of the rectangles, i.e., their heights, is important. Calculate the area of the largest rectangle in a histogram that is aligned at the common base line, too. The figure on the right shows the largest aligned rectangle for the depicted histogram.
Input
The input contains several test cases. Each test case describes a histogram and starts with an integer n, denoting the number of rectangles it is composed of. You may assume that 1 <= n <= 100000. Then follow n integers h1, ..., hn, where 0 <= hi <= 1000000000. These numbers denote the heights of the rectangles of the histogram in left-to-right order. The width of each rectangle is 1. A zero follows the input for the last test case.
Output
For each test case output on a single line the area of the largest rectangle in the specified histogram. Remember that this rectangle must be aligned at the common base line.
Sample Input
7 2 1 4 5 1 3 34 1000 1000 1000 10000
Sample Output
84000
Source
0 0
- 【DP】 hdu1506 Largest Rectangle in a Histogram
- HDU1506 ( Largest Rectangle in a Histogram ) [dp]
- hdu1506 Largest Rectangle in a Histogram (DP)
- [HDU1506]Largest Rectangle in a Histogram[dp]
- HDU1506 Largest Rectangle in a Histogram(简单DP)
- hdu1506 Largest Rectangle in a Histogram(DP)
- HDU1506-Largest Rectangle in a Histogram(dp)
- hdu1506 Largest Rectangle in a Histogram--DP/栈
- HDU1506 Largest Rectangle in a Histogram(水DP)
- hdu1506 & pku2559 Largest Rectangle in a Histogram
- hdu1506 Largest Rectangle in a Histogram
- HDU1506--Largest Rectangle in a Histogram
- hdu1506 Largest Rectangle in a Histogram
- HDU1506 Largest Rectangle in a Histogram
- HDU1506 Largest Rectangle in a Histogram
- hdu1506 Largest Rectangle in a Histogram
- HDU1506--Largest Rectangle in a Histogram (动态规划)
- zoj1985 hdu1506 Largest Rectangle in a Histogram (动态规划)
- JS操作JSON总结
- 【iOS开发】iO7以上CIFilter生成二维码(带二维码颜色变换)
- getRunningTasks API从Android 5.0开始非系统App调用会出问题
- java中读取Excel问题
- Ordering Autowired Collections
- hdu1506 Largest Rectangle in a Histogram(DP)
- 机器学习和计算机视觉相关的数学基础-收藏
- Struts2中使用Session的两种方法
- [疯狂Java]NIO:Channel的map映射
- H5中video标签
- [Java视频笔记]day24
- [主席树套堆 区间修改 标记永久化] BZOJ 3489 A simple rmq problem
- dateformat中日期格式化的正则对应
- iOS兼容HTML语句