hdu1506】的更多相关文章

# include <stdio.h> # include <algorithm> # include <string.h> # include <iostream> using namespace std; char a[1010][1010]; int dd[1010][1010];///宽度 int r[1010],l[1010]; int main() { int t,i,j,n,m,max1; while(~scanf("%d"…
hdu1506 直方图中最大的矩形 单调栈入门 直方图是由在公共基线对齐的矩形序列组成的多边形.矩形具有相同的宽度,但可能具有不同的高度.例如,左侧的数字显示了由高度为2,1,4,5,1,3,3的矩形组成的直方图,单位为1,其中矩形的宽度为1: 通常,直方图用于表示离散分布,例如文本中字符的频率.请注意,矩形的顺序,即它们的高度很重要.计算在公共基线上对齐的直方图中最大矩形的面积.右图显示了所描述的直方图的最大对齐矩形. 输入包含几个测试用例.每个测试用例都描述一个直方图,并以整数n开头,表示它…
F - City Game Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1505 Appoint description: Description Bob is a strategy game programming specialist. In his new city building game the gaming enviro…
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11541    Accepted Submission(s): 3174 Problem Description A histogram is a polygon composed of a sequence of rect…
//Accepted 1428 KB 62 ms // #include <cstdio> #include <cstring> #include <iostream> using namespace std; ; int l[imax_n]; int r[imax_n]; int a[imax_n]; int n; void Dp() { l[]=; a[]=-; ;i<=n;i++) { int t=i; ]) { t=l[t-]; } l[i]=t; } r…
today, my cc can't make '__in64' it's so bad!!! i don't know why #include <stdio.h> //long long num[100000+100]; __int64 num[+]; __int64 res; //long long res; int main(){long long res; int n,i; +]; +]; int t; while(~scanf("%d",&n)&…
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 13997    Accepted Submission(s): 3982 Problem Description A histogram is a polygon composed of a sequence of rect…
近期情绪太不稳定了.可能是由于在找实习这个过程碰壁了吧.第一次面试就跪了,可能是我面的是一个新公司,制度不完好,我感觉整个面试过程全然不沾编程,我面试的还是软件开发-后来我同学面试的时候.说是有一道数学题了.最后都已经签了,orz...其它同学都陆续签了,有签了知乎.有签了猎豹的,有签了阿里的,我还在想着打比赛,作为一个快大四的人.我还想着打比赛.甚至我连队友都快没了-可是我还想坚持!到如今,我基本没课了,每天都仅仅能是刷刷题,写写python,搞搞shell,我都不知道我在干嘛-!有没有大神给…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506 分析: 对于每个单位矩阵,我们先求出连续比它高的最左边的下标假设为l,然后求出比它高的最右边的下标假设为r,然后矩阵的面积就是(r-l+1)*1: 我们从左到右扫一遍,求出每个点的l保存在l[]数组里,然后从右到左扫一遍,求出每个点的r保存在r[]数组里,最后可以求出最大的矩阵了. #include <cstdio> #include <cstring> #include <…
可以算出以第i个值为高度的矩形可以向左延伸left[i],向右延伸right[i]的长度 那么答案便是 (left[i] + right[i] + 1) * a[i] 的最大值 关键left[i] 和right[i]的计算 如果a[i] > a[i-1]  ,  那么left[i] = 0 如果a[i] <=a[i-1],  那么left[i] = left[i-1] + 1,   但是位置i-1-left[i-1]-1及其往左的元素没有比较过,所以需要继续去比较 同理right[i]的计算也…