HDU 1506 不会则直方图最大矩形
来源:互联网 发布:战网客户端 mac 编辑:程序博客网 时间:2024/05/26 07:27
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;//#include<algorithm>using namespace std;为了调用库函数max__int64 dp[100005]; //因为高已经很大了乘上底会更大,所以用__int64__int64 h[100005],l[100005],r[100005];int main(){ __int64 n; while(scanf("%I64d",&n))//注意64位的输出格式 { if(n==0) return 0; memset(dp,0,sizeof(dp));//养成习惯 memset(h,0,sizeof(h)); __int64 i;//注意i为了统一也设置成__int64 for(i=1;i<=n;i++) scanf("%I64d",&h[i]); for(i=1;i<=n;i++)//初始化两边可以延展的范围 { r[i]=i; l[i]=i; } for(i=1;i<=n;i++)//找左极限必须从1开始,保证前面每一个l[i]需要调用的l[i-1,...,1]都是已经设置好的 { while(h[i]<=h[l[i]-1]&&l[i]>1)//只要不是第一个数,就和前面的数继续比较小于等于就继续向左延伸 l[i]=l[l[i]-1]; } for(i=n;i>=1;i--)//找右极限必须从n开始,保证r[i]右边的需要调用的r[i+1,...,n]都是已经设置好的 { while(h[i]<=h[r[i]+1]&&r[i]<n)//只要不是最后一个数,就和前面的数继续比较小于等于就继续向右延伸 r[i]=r[r[i]+1]; } for(i=1;i<=n;i++) { dp[i]=h[i]*(r[i]-l[i]+1);//底需要加1 } __int64 max=0; for(i=1;i<=n;i++) if(max<dp[i]) max=dp[i];//求出组大面积 printf("%I64d\n",max); } return 0;}
1 0
- HDU 1506 不会则直方图最大矩形
- 直方图最大面积矩形
- 直方图内最大矩形
- 直方图内最大矩形
- 直方图最大矩形覆盖
- 直方图内最大矩形
- 直方图最大矩形
- 直方图最大矩形面积
- 直方图内最大矩形
- 直方图包含最大矩形
- 直方图内最大矩形
- 直方图内最大矩形
- 直方图中的最大矩形
- 直方图内最大矩形
- 直方图最大矩形问题
- CSP 直方图中的最大矩形
- LintCode 直方图最大矩形覆盖
- 寻找直方图中最大矩形
- 深圳地税申报流程
- Sublime Text中文乱码
- telnet服务器源码安装
- 数据结构之已知二叉树前中序列求后序
- html meat标签自适应手机
- HDU 1506 不会则直方图最大矩形
- 翻译测试
- 常用SQL语句总结(2)
- Android 去除手机系统自带动画
- 指向指针的指针!!(能让初学者绕晕的东西)
- 数据结构上机实验之二分查找
- HDU1505 1506升级版
- Python练习100例-13
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍