博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1506(dp)
阅读量:6485 次
发布时间:2019-06-23

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

题目链接:

大意:求一个最大的区域,则第i个矩形对应的面积是ave[i] = (r[i] - l[i] + 1) * a[i];l[i]表示以它这个高度所能到达的最左边的位置(最左一个高度不小于它的高度的位置),而r[i]表示能到达的最右边的位置(最右一个高度不小于它的高度的位置)。

这道题实际上就是对于任意数x求大于等于x的最左数的下标和最右数的下标;直接进行迭代就行;

View Code
1 #include
2 #include
3 const int N=110000; 4 using namespace std; 5 __int64 h[N],l[N],r[N]; 6 7 int main(){ 8 int n; 9 while(scanf("%d",&n)!=EOF){10 if(n==0)break;11 for(int i=1;i<=n;i++){12 scanf("%I64d",&h[i]);13 l[i]=r[i]=i;14 }15 h[0]=h[n+1]=-1;16 for(int i=1;i<=n;i++){17 while(h[l[i]-1]>=h[i])18 l[i]=l[l[i]-1];19 }20 for(int i=n;i>=1;i--){21 while(h[r[i]+1]>=h[i])22 r[i]=r[r[i]+1];23 }24 __int64 Max=0,ans=0;25 for(int i=1;i<=n;i++){26 ans=(r[i]-l[i]+1)*h[i];27 Max=max(ans,Max);28 }29 printf("%I64d\n",Max);30 }31 return 0;32 }

 

转载地址:http://lgnuo.baihongyu.com/

你可能感兴趣的文章
Shell 函数、数组与正则表达式
查看>>
编译安装PHP时两个报错的解决办法
查看>>
System Center 2012 SP1 Data Protection Manager 防止重复备份数据
查看>>
软考复习之路——软考总结
查看>>
Kali linux 2016.2(Rolling)里Metasploit的常用模块
查看>>
企业项目开发--企业中的项目架构以及多环境分配(1)
查看>>
ZOJ 2412 Farm Irrigation
查看>>
C++语言基础(19)-模板的显式具体化
查看>>
[轉]JavaScript获取HTML DOM父,子,临近节点
查看>>
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
查看>>
如何改变Android tab 的高度和字体大小
查看>>
hdu 2853
查看>>
VS2013 MVC Web项目使用内置的IISExpress支持局域网内部机器(手机、PC)访问、调试...
查看>>
Vue.js常用指令:v-show和v-if
查看>>
java自定义接口
查看>>
Codeforces Round #152 (Div. 2) B题 数论
查看>>
马云马化腾等大佬,是如何看待区块链的?
查看>>
10倍于行业增速!海尔冰箱套圈引领
查看>>
Java集合总结【面试题+脑图】,将知识点一网打尽!
查看>>
java基础(十) 数组类型
查看>>