hdu 1506 Largest Rectangle in a Histogram
来源:互联网 发布:手机怎么打开php视频 编辑:程序博客网 时间:2024/05/22 10:58
//给一个柱形图,找到其中面积最大的矩形。//对于每一个柱形,找到它最左边的,高度大于等于它下标, 同理也要找到它最右边的,高度大于等于它的 下标。//但如果普通的顺序遍历的话,最坏情况会退化成O(n^2),这里的优化方法就是,如果当前查找的柱形比它大于等于,那么就直接去找当前柱形的边界。//这样的话,查找就是跳跃式的。#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>using namespace std;#define N 100005long long h[N],l[N],r[N];int main(){ int n,tmp; while(scanf("%d",&n)&&n) { for(int i=1;i<=n;i++) scanf("%I64d",&h[i]); h[n+1]=h[0]=-1; l[1]=1; r[n]=n; for(int i=1;i<=n;i++) { tmp=i; while(1) { if(h[tmp-1]>=h[i]) tmp=l[tmp-1]; else break; } l[i]=tmp; } for(int i=n;i>=1;i--) { tmp=i; while(1) { if(h[tmp+1]>=h[i]) tmp=r[tmp+1]; else break; } r[i]=tmp; } long long ans=0; for(int i=1;i<=n;i++) { ans=max(ans,h[i]*(r[i]-l[i]+1)); } printf("%I64d\n",ans); } return 0;}
- hdu 1506 Largest Rectangle in a Histogram
- HDU 1506 Largest Rectangle in a Histogram
- hdu 1506 Largest Rectangle in a Histogram
- hdu 1506 Largest Rectangle in a Histogram
- hdu 1506 Largest Rectangle in a Histogram
- HDU 1506 Largest Rectangle in a Histogram
- hdu 1506 Largest Rectangle in a Histogram
- HDU 1506 Largest Rectangle in a Histogram
- hdu 1506 Largest Rectangle in a Histogram
- hdu 1506 Largest Rectangle in a Histogram
- HDU 1506 Largest Rectangle in a Histogram
- HDU 1506 Largest Rectangle in a Histogram
- hdu 1506 Largest Rectangle in a Histogram
- HDU 1506 Largest Rectangle in a Histogram
- HDU 1506 Largest Rectangle in a Histogram
- hdu 1506 Largest Rectangle in a Histogram
- hdu 1506 Largest Rectangle in a Histogram
- hdu 1506 Largest Rectangle in a Histogram
- SDKD Single training #10未完成题目
- 胜利大逃亡 hdu 1253 三维
- 07-php中的方法重写
- XCode中调整字体大小
- bloom filter
- hdu 1506 Largest Rectangle in a Histogram
- swift命令行操作
- 进程和线程的区别
- java中servlet的介绍
- 图文解释XCode常用快捷键的使用
- poj2007
- 较真一下OpenGL Clip Space和NDC
- curl笔记5
- 线段树(先占个坑,有空去填)