HDU1506 ( Largest Rectangle in a Histogram ) [dp]
近期情绪太不稳定了。可能是由于在找实习这个过程碰壁了吧。第一次面试就跪了,可能是我面的是一个新公司,制度不完好,我感觉整个面试过程全然不沾编程,我面试的还是软件开发~后来我同学面试的时候。说是有一道数学题了。最后都已经签了,orz...其它同学都陆续签了,有签了知乎。有签了猎豹的,有签了阿里的,我还在想着打比赛,作为一个快大四的人。我还想着打比赛。甚至我连队友都快没了~可是我还想坚持!到如今,我基本没课了,每天都仅仅能是刷刷题,写写python,搞搞shell,我都不知道我在干嘛~!有没有大神给我来份实习啊!!!(还是要自己去找的..)事实上,对照那些签了约的同学,一開始我就非常不服输。我认为明明我应该相比他们“厉害”啊。后来。我发现。我还是太弱了,火候没够,再坚持一把吧。
由于随时都可能组不成队伍,所以我每天刷题的时间不超过三个小时,很多其它时候仅仅是一个小时,就是早起来刷一题。
近期一直在做dp.可是今天做一题我做过的题目都弄了非常久,烦死,思想不集中!
题目的意思就是,在直方图中找一个面积最大的矩形。思想就是dp咯。就是对于每个小矩形向外扩展。直到扩展到比它矮,这样这个小矩形所组成的面积就是最大了,可是在扩展这个过程注意迭代,不然就会跪在TLE了。n^2必超的啊。
/***********************************************************
> OS : Linux 3.2.0-60-generic #91-Ubuntu
> Author : yaolong
> Mail : dengyaolong@yeah.net
> Time : 2014年06月01日 星期日 07:14:54
**********************************************************/
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
int h[123456];
int lt[123456],rt[123456];
int main(){
int n;
while(scanf("%d",&n)&&n){
for(int i=1;i<=n;i++){
scanf("%d",&h[i]);
}
long long res=0LL;
rt[n]=n;lt[1]=1;
for(int i=n-1;i>=1;i--){
/*if(h[i]<=h[i+1]){
rt[i]=rt[i+1];
}else{
rt[i]=i;
}*/
int t=i;
while(t<n&&h[i]<=h[t+1]) t=rt[t+1];
rt[i]=t; }
for(int i=2;i<=n;i++){
/*
if(h[i]<=h[i-1]){
lt[i]=lt[i-1];
}else{
lt[i]=i;
}*/
int t=i;
while(t>1&&h[i]<=h[t-1]) t=lt[t-1];
lt[i]=t;
} for(int i=1;i<=n;i++){
res=max(res,(long long)h[i]*(rt[i]-lt[i]+1)); }
printf("%I64d\n",res);
} return 0;
}
HDU1506 ( Largest Rectangle in a Histogram ) [dp]的更多相关文章
- hdu---1506(Largest Rectangle in a Histogram/dp最大子矩阵)
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- NYOJ-258/POJ-2559/HDU-1506 Largest Rectangle in a Histogram,最大长方形,dp或者单调队列!
Largest Rectangle in a Histogram 这么经典的题硬是等今天碰到了原题现场懵逼两小时才会去补题.. ...
- HDU1506 Largest Rectangle in a Histogram (动规)
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- hdu1506——Largest Rectangle in a Histogram
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- hdu1506 Largest Rectangle in a Histogram
Problem Description A histogram is a polygon composed of a sequence of rectangles aligned at a commo ...
- HDU 1506 Largest Rectangle in a Histogram(DP)
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- 【题解】hdu1506 Largest Rectangle in a Histogram
目录 题目 思路 \(Code\) 题目 Largest Rectangle in a Histogram 思路 单调栈. 不知道怎么描述所以用样例讲一下. 7 2 1 4 5 1 3 3 最大矩形的 ...
- HDU-1506 Largest Rectangle in a Histogram【单调栈】
Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base l ...
- BNUOJ-15505 Largest Rectangle in a Histogram DP
题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=15505 每个h[i]维护两个值l[i]和r[i],分别表示大于h[i]的左边最远距离和小于 ...
随机推荐
- CSS 实现底部固定
在制作页面有这样一种现象:当一个HTML页面中含有较少的内容时,Web页面的“footer”部分随着飘上来,处在页面的半腰中间,给视觉效果带来极大的影响,让你的页面看上去很不好看,特别是现在宽屏越来越 ...
- hdu 5654 xiaoxin and his watermelon candy 莫队
题目链接 求给出的区间中有多少个三元组满足i+1=j=k-1 && a[i]<=a[j]<=a[k] 如果两个三元组的a[i], a[j], a[k]都相等, 那么这两个三 ...
- OpenCV学习 2:播放AVI视频
原创文章,欢迎转载,转载请注明出处 第二个程序,播放视频.用opencv做起来是如此的简单..哈哈. 学Opencv,只是为了在它的基础上实现工程应用,而它里面高深的理论我等屌丝只 ...
- 使用verilog实现4选1数据选择器的几种方法
第一种方法module mux( d1, d2, d3, d4, se1, se2, dout ); input d1; input d2; input d3; input d4; input se1 ...
- SQL Server 查看数据页面
第一步: 找到表的第一页dbcc ind(db_name,table_name,-1); 例子. dbcc ind(studio,person,-1);# pageFID 是文件号 pagePI ...
- Linux(CentOS6.5) 开放端口,配置防火墙
打开配置文件 [root@localhost ~]# vi /etc/sysconfig/iptables 正确的配置文件 # Firewall configuration written by sy ...
- 解密电子书之四:MCU(freescale)
谈完国产的君正,让我们再看看呛了君正财路的freescale iMX51. 这是freescale近期的主打产品,用的是ARM Cortex A8架构,主频在消费电子领域最高可达800MHz,在工业领 ...
- 对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
在程序中调用C++链接库中的回调函由于没有考虑生命周期,直接写委托回随机的被gc给回收掉导致报这个错误 错误的程序: private void InitPlateIdentify() { try { ...
- isalpha函数,判断字符是否是字母
头文件:<iostream> or <cctype> 在c语言中<ctype.h> 功能:判断一个字符是否是英文字符,是大写返回1,是小写返回2,不是英文字符返 ...
- leetcode Longest Palindromic Substring python
class Solution(object): def longestPalindrome(self, s): """ :type s: str :rtype: str ...