博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Largest Rectangle in a Histogram
阅读量:4648 次
发布时间:2019-06-09

本文共 1328 字,大约阅读时间需要 4 分钟。

hdu1506:

题意:给你一些直的的方块,这些方块的底部在同一条直线上,但是高度不一样,让你找一个最大的方块,这个方块是由这些矩阵拼起来的。

题解:自己太渣了,完全不会这一题怎么写,发现自己的思维能力太弱了,根本不会思考,。。。。不说了,继续努力。这一题要处理出以每个方块为中心向左向右分别能扩展的距离,所谓能扩展就是指左边最长的比他大的距离,这样计算的时候就可以知道如果以这个方块的高度为矩阵的高,最大会得到的面积。处理完之后,然后for一遍得到最大面积。

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 const int N=5*1e5+4; 7 int ll[N],rr[N]; 8 int a[N]; 9 long long ans;10 int n;11 int main(){12 while(~scanf("%d",&n)&&n){13 memset(ll,0,sizeof(ll));14 memset(rr,0,sizeof(rr));15 memset(a,-1,sizeof(a));16 for(int i=1;i<=n;i++)17 scanf("%d",&a[i]);18 for(int i=1;i<=n;i++){19 ll[i]=i;20 if(i==1)continue;21 int t=i-1;22 while(a[i]<=a[t]){23 ll[i]=ll[t];24 t=ll[t]-1;25 }26 }27 for(int i=n;i>=1;i--){28 rr[i]=i;29 if(i==n)continue;30 int t=i+1;31 while(a[i]<=a[t]){32 rr[i]=rr[t];33 t=rr[t]+1;34 }35 }36 ans=0;37 for(int i=1;i<=n;i++)38 ans=max(ans,(long long)(rr[i]-ll[i]+1)*(long long)a[i]);39 printf("%I64d\n",ans);40 }41 }
View Code

 

转载于:https://www.cnblogs.com/chujian123/p/3868950.html

你可能感兴趣的文章
python编码问题
查看>>
POJ 2031 Building a Space Station
查看>>
面向对象1
查看>>
编程开发之--java多线程学习总结(5)
查看>>
如何让 zend studio 10 识别 Phalcon语法并且进行语法提示
查看>>
任意阶幻方(魔方矩阵)C语言实现
查看>>
视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
查看>>
第五次作业
查看>>
织梦教程
查看>>
杭电多校 Harvest of Apples 莫队
查看>>
java 第11次作业:你能看懂就说明你理解了——this关键字
查看>>
C/C++心得-结构体
查看>>
函数名作为参数传递
查看>>
apt-get for ubuntu 工具简介
查看>>
数值计算算法-多项式插值算法的实现与分析
查看>>
day8-异常处理与网络编程
查看>>
Python基础-time and datetime
查看>>
Linux epoll 笔记(高并发事件处理机制)
查看>>
shell脚本练习01
查看>>
WPF图标拾取器
查看>>