HDU 1506 Largest Rectangle in a Histogram 迭代思想应用
来源:互联网 发布:mongodb 连接数据库 编辑:程序博客网 时间:2024/06/05 18:12
依次考虑每一个a[i],只需要求出左边和右边连续的不小于a[i]数的个数即可。所以,要维护l[i]和r[i]。
然后优化的地方在于l[i]和r[i]的求法:
- a[i-1] < a[i],l[i]=l[i-1]。
- a[i-1] >= a[i],一直沿着i=r[i-1]找下去,一直到上面的式子成立。
#include <stdio.h>using namespace std;const int N=100000+10;__int64 a[N],l[N],r[N],tmp;int main(){ int n,i; while(~scanf("%d",&n)&&n) { for(i=1; i<=n; i++) { scanf("%I64d",&a[i]); l[i]=r[i]=i; } a[0]=a[n+1]=-1; for(i=1; i<=n; i++) { while(a[l[i]-1]>=a[i]) l[i]=l[l[i]-1]; } __int64 ans=0; for(i=n; i>=1; i--) { while(a[r[i]+1]>=a[i]) r[i]=r[r[i]+1]; tmp=(r[i]-l[i]+1)*a[i]; if(tmp>=ans) ans=tmp; } printf("%I64d\n",ans); } return 0;}
0 0
- HDU 1506 Largest Rectangle in a Histogram 迭代思想应用
- hdu 1506 Largest Rectangle in a Histogram (dp思想)
- 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
- android学习——activity实现跳转
- <我的C++程序>简单的学生信息管理系统
- [常用maven配置]scala配置以及打包可运行JAR
- Cooja Simulator
- Python-地址簿
- HDU 1506 Largest Rectangle in a Histogram 迭代思想应用
- 【转】Oracle和DB2术语对照表
- 电商系统Broadleaf文档翻译(九) – 扩展的服务extending services
- 关于abstract使用正确的一个经典选择题
- 按照CRUD的原则整理一下git基本命令
- 继承,菱形继承,多态,虚拟继承,多虚拟继承,菱形虚拟继承
- CCPP资料
- 9. 使用Filter
- android自动弹出软键盘(输入键盘)