HDU1506------据说是DP,我更觉得是简单的枚举
来源:互联网 发布:mysql 5.6.25.tar.gz 编辑:程序博客网 时间:2024/05/10 12:24
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1506
题目意思:
给你n,然后告诉你这n段的高度,这样就组成了一个直方图
为你直方图中最大的矩形的面积是多少
解题思路:
枚举啦
对于每个高度h[i],都找出他能到的最左边以及最右边
然后再求面积
但是在找最左边和最右边的时候是有技巧的
对于h[i]而言,如果左边的h[i-1]比他大,则他的最左边一定是i-1的最左边,然后一直迭代下去
具体详见代码:
#include<cstdio>#include<algorithm>using namespace std;#define LL long longconst int maxn = 100000+10;LL l[maxn];LL r[maxn];LL h[maxn];int main(){ int n; while(~scanf("%d",&n) && n) { for(int i=1;i<=n;i++) scanf("%I64d",&h[i]); //通过迭代在找对于每个h[i],最左边能到哪 l[1]=1; //确定左右高度的边界值,很重要 h[0]=-1; h[n+1]=-1; for(int i=2;i<=n;i++) { l[i]=i; while(h[l[i]-1]>=h[i]) { l[i]=l[l[i]-1]; } } r[n]=n; for(int i=n-1;i>=1;i--) { r[i]=i; while(h[i]<=h[r[i]+1]) r[i]=r[r[i]+1]; } LL ans = -1; LL tmp; for(int i=1;i<=n;i++) { tmp = (r[i]-l[i]+1)*h[i]; if(tmp>ans) ans=tmp; } printf("%I64d\n",ans); } return 0;}
- HDU1506------据说是DP,我更觉得是简单的枚举
- hdu1506 水水的dp
- hdu1506 dp
- poj 2299 Ultra-QuickSort(树状数组+离散化的题目)据说是简单题,不过还是觉得好难。。。
- HDU1505-----DP?HDU1506的加强版
- HDU1506 Largest Rectangle in a Histogram(简单DP)
- Quartus NIos DSP Builder 9.0全系列的授权文件(我觉得是最简单的方法)
- 真心觉得,我的粉丝是一群善良的人
- 我觉得PCA与因子分析的本质是一样的
- 为什么我觉得软件测试是一个有前途的行业?
- insomniac是我觉得最具黑客精神的公司
- 我觉得是时候要真的开始拼命了
- hdu1506 经典dp
- 据说是介绍Hiberate最简单的文章
- UESTC 1703 一道更简单的字符串题 哈希+枚举
- 我觉得在传智播客学习是我做的最明智的一个决定!
- 我觉得在传智播客学习是我做的最明智的一个决定
- 我觉得C语言是根本
- Qt模态与非模态
- 三次握手的简单理解
- oracle 11gR2 新增deinstall命令来卸载grid和database
- 字符串匹配
- HTML中id、name、class 区别
- HDU1506------据说是DP,我更觉得是简单的枚举
- java面试题一
- Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式
- 利用游标进行数据库数据备份
- 中国“天河二号”成为全球最快超级计算机
- 音乐播放器之源码解析五
- poj 2533 LCS
- 使用xjc生成java类
- 2013java面试题2(答案会更新)