1677: 小学生小明,圣光会制裁你!!!

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 59   Solved: 22
[ Submit][ Status][ Web Board]

Description

一个数轴上连续摆放着n个矩形,每个矩形的底边占一个单位的长度,第i个矩形的高度为ai.小明想从这n个矩形围成的图形割出一块面积最大的矩形,他已经机智的割出了最大矩形,然而他并不知道矩形面积怎么算,于是他就想问你最大矩形面积怎么算。

Input

多组测试数据。

第一行输入n(0<n<=100000)当n=0时停止输入

接下一行来输入n个数ai,0<=ai<=1000000000

Output

输出最大矩形面积

Sample Input

7 2 1 4 5 1 3 3
4 1000 1000 1000 10000

Sample Output

8
4000
【解析】
这道题的话网上是用栈来做的,自己一看确实这样做比较方便。很多题都是这样..不过自己感觉总是做了忘..做了
忘也希望有点积累吧。这道题我们想啊,怎么样可以凑出一个矩形来 ,矩形的高度和宽度要怎么选择,大家可以这
么选,一高一矮的矩形在一起肯定是选矮的矩形高度来作为最大面积矩形的高度,还是在代码中解释吧..感觉有点
卡词了...这里需要用到pair,如果之前不理解的可以去了解一下...

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<stack>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> P;
#define MAX 100010
int main()
{int n,i;LL sum,height,H,W;while(~scanf("%d",&n)){if(n==0)break;stack<P>a;//模拟栈sum=0;for(i=0;i<n;i++){scanf("%lld",&height);//输入高度LL width=0;while(!a.empty()&&a.top().first>=height)/*如果栈顶的元素高于输入的高度就要开始计算左边界和右边界也可以就行确定,拿样例1举例子,刚开始输入进栈的时候是(2,1)之后是输入1,然后2大于1,所以计算下面积,现在的最大面积是2,之后(1,2)进栈(2,1)已经出栈了,之后再输入4,比栈顶元素高度大所以进栈(4,1),再输入5,5比栈顶元素大,所以入栈为(5,1)再输入一个1,这个时候比栈顶元素小,所以要计算一下以栈顶元素的高度为高的矩形面积,宽度以它自身带的宽度,为5所以现在最大面积是5,这个时候(5,1)出栈,而现在继续比较(4,1)这个时候4大于1,所以宽度变成2了,高度以栈顶元素的高度,最大面积是8了,这个时候是(1,3)入栈了,表示前面有两个高度比他高的了,在下面计算面积的时候也就可以计算了。*/{H=a.top().first;W=a.top().second;a.pop();width=width+W;sum=max(sum,H*width);}a.push(make_pair(height,width+1));}W=0;while(!a.empty())/*到了这里,栈里面矩形的高度就是从栈顶到栈底是逐渐减小的了所以宽度往后可以直接进行相加在样例1中就是计算了(3,2)还计算了(1,3)这个时候宽度为5了就是2+3*/{sum=max(sum,a.top().first*(W+a.top().second));W+=a.top().second;a.pop();}printf("%lld\n",sum);}return 0;
}

ZCMU-1677-小学生小明,圣光会制裁你!!!相关推荐

  1. 小明一家过桥_小学数学最难的“小明过桥”问题,答案不一致,大学生吵翻了...

    在小学数学当中,有一道非常难的"小明过桥"问题,引发了大家的热议.由于答案有很多种,就连大学生们,也陷入到了争论当中!为此吵翻了! 原题目是这样的: 小明一家要过桥,夜晚要用手电筒 ...

  2. 0-1背包之小明和丁丁的奇遇

    又是一个阳光明媚的周末,是一个出去游玩的好日子. 小明背上书包,和他的好朋友丁丁一起去郊外游玩. 郊外芳草青青,流水潺潺.真是一个游玩的好地方啊! 正当小明和丁丁玩的正High的时候,突然间冒出来一个 ...

  3. 求小明正确的四位手机密码

    小学生题目: 小明五次输入四位数的手机密码均错误,但是每次输入的密码中都有两位数字正确,且输入的数字的位置都不正确.求小明正确的四位手机密码. 五次手机密码分别是: 6087 5173 1358 38 ...

  4. NYOJ-49 开心的小明

    开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他 ...

  5. OSChina 周六乱弹 —— 小明和网关超经典的故事~

    2019独角兽企业重金招聘Python工程师标准>>> 周六,又到了瞎扯淡的时间了.周末,约会,男男女女,还有那啥那啥,你们懂得- 男人和女人明显不同,这样才导致了异性相吸吗? 1. ...

  6. CSP 201812-2 小明放学 Python实现+详解

    试题 代码 # 红灯 r 秒,黄灯 y 秒,绿灯 g 秒 r, y, g = [int(i) for i in input().split()]# n表示小明总共经过的道路段数和看到的红绿灯数目 n ...

  7. CSP 201812-1 小明上学 Python实现+详解

    题目 代码 #红灯 r 秒,黄灯 y 秒,绿灯 g 秒 r,y,g = [int(i) for i in input().split()]#n表示小明总共经过的道路段数和看到的红绿灯数目 n = in ...

  8. 胡小明:城市大脑与人脑不同的数据意识

    一.数据应用要区别对待 1.2 数据应用比数据收集重要 大数据热正在席卷全国,许多地方政府都成立大数据局,统管政府的数据资源并将数据收集摆在第一位,数据应用研究却迟迟跟不上,投资不断增长应用效益却无相 ...

  9. asp.net多图片上传案例_会计小明的故事-成本核算案例篇

    因涉及成本核算案例篇,所需要的图表比较多,但是知乎不同于微信可以直接将文档图表复制过来,知乎专栏文章,所有图表必须先截图,然后以图片形式展示.但是成本核算案例图表实在是太多,一一截图,一则影响整体观感 ...

最新文章

  1. linux图形界面基本知识(X、X11、Xfree86、Xorg、GNOME、KDE之间的关系)
  2. hadoop28---netty传对象
  3. CMD中文乱码出现的原因及解决办法
  4. Django框架深入了解_04(DRF之url控制、解析器、响应器、版本控制、分页)(二)
  5. 根据您的命令-命令设计模式
  6. unity烘培单个物体_Unity可编程渲染管线(SRP)教程:二、自定义着色器
  7. 基于epoll+threadpool的webServer分析与实现
  8. 潭州Java中级班(day_05)
  9. Python之面向对象的程序设计
  10. 程序员玩连连看的正确姿势
  11. 淘宝客APP源码/社交电商自营商城源码/前端基于Uniapp开发
  12. myqq框架 python插件
  13. 大数据分析案例:财政收入预测Jupyter版
  14. 举个栗子!Tableau 技巧(86):用 ZN 函数处理数据缺失点
  15. Palantir早期员工、连续创业者Brien Colwell:创业动力源自创造文化
  16. 网易互娱C++岗一面面经(凉面)
  17. java8-stream新特性详解及实战
  18. 【云服务器搭建游戏私服】全流程
  19. 解决usage: mo_onnx.py [options] mo_onnx.py: error: unrecognized arguments: 113.985 119.85] 69.87 70.89
  20. 多张JPG图片怎么转成一个PDF

热门文章

  1. 进入制造业腹地,腾讯企业微信能触达产业互联网吗?
  2. 2022年普通脚手架工(建筑特殊工种)考试题及在线模拟考试
  3. QT MSVC 编译器添加新类报错LNK2019 error LNK2019: unresolved external symbol public
  4. 生态伙伴 | 中电创新科技集聚示范区携手华秋硬创,加速智能硬件孵化
  5. Android账号登录与设备绑定问题
  6. 艾永亮:这家75亿美元的面包店如何通过超级产品战略对垒星巴克
  7. 转移熵matlab,转移熵
  8. 破解滑动验证码,成功率在百分之九十九
  9. 重启计算机后回收站,win7在右键菜单中添加“清空回收站”和“重新启动”选项的方法(图文)...
  10. 502粘到手上变硬了怎么办_运动鞋开胶了用了502胶水来粘切变硬了怎么 – 手机爱问...