HDU 1506 dp求最大子矩阵 *
来源:互联网 发布:阿里指数数据分析平台 编辑:程序博客网 时间:2024/06/05 19:46
Largest Rectangle in a Histogram
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14692 Accepted Submission(s): 4222
Problem 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:
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
University of Ulm Local Contest 2003
题意:让求出大的矩形面积
思路:
可以求出求a[i]之前的连续比他大的下标,求a[i]之后的连续比他大的下标
两下标相减就得长度了
题意:让求出大的矩形面积
思路:
DP找出a[i]的左边和右边与自己连着的比自己大的数的长度,然后用这个长度乘以a[i],乘积最大的那个就是答案.
可以求出求a[i]之前的连续比他大的下标,求a[i]之后的连续比他大的下标
两下标相减就得长度了
#include<bits/stdc++.h>using namespace std;int l[100010],r[100100];int a[100010];int main(){ int n; while(~scanf("%d",&n),n) { for(int i=0;i<n;i++) { scanf("%d",&a[i]); l[i]=r[i]=i; } for(int i=0;i<n;i++) //求a[i]之前的连续比他大的下标 { while(l[i]>=1&&a[l[i]-1]>=a[i]) l[i]=l[l[i]-1]; } for(int i=n-1;i>=0;i--)//求a[i]之后的连续比他大的下标 { while(r[i]<n-1&&a[r[i]+1]>=a[i]) r[i]=r[r[i]+1]; } long long Max=0,ans=0; for(int i=0;i<n;i++) { ans=(long long)(r[i]-l[i]+1)*a[i]; //左右下标相减 if(ans>Max) Max=ans; } printf("%lld\n",Max); }}
1 0
- HDU 1506 dp求最大子矩阵 *
- #HDU 1506 dp求最大子矩阵
- 【DP求最大子矩阵面积】hdu 1506
- HDU 1506 (DP求最大子矩阵)
- hdu 1506 求最大子矩阵 简单DP 迭代法
- HDU 1506 DP 最大完全子矩阵
- HDU 2870 Largest Submatrix DP求最大子矩阵
- hdu 1506 Largest Rectangle in a Histogram ((dp求最大子矩阵))
- HDU 1506 Largest Rectangle in a Histogram(dp求最大子矩阵和)
- DP求一类最大子矩阵
- maxsum(dp求最大子矩阵)
- HDU 1505 求最大子矩阵(二维)
- HDU 1505 1506 2830 2870求最大矩阵面积 DP
- hdu 1559【最大子矩阵和DP】
- hdu 1559 最大子矩阵(DP)
- HDU 1559 最大子矩阵(DP)
- HDU 1505 DP 最大完全子矩阵
- hdu 4328 最大子矩阵(DP)
- PANIC: Could not open: AVD
- sourceTree最新版本下载
- Visual Studio 2010 出现关于ActivityLog.xml错误的解决方案
- 机器学习算法实现的演化
- java.lang.IllegalStateException: commit already called
- HDU 1506 dp求最大子矩阵 *
- 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut .
- android我的菜谱项目中添加数据库
- MYSQL添加远程用户或允许远程访问三种方法
- 编译器架构的王者LLVM——(9)栈式符号表的构建
- Java工作利器之常用工具类(一)——数字工具类-数字转汉字
- nginx上传文件
- [TwistedFate]触摸事件 晃动事件 target/action
- 在Eclipse中查看JDK类库的源代码