美团笔试最大矩形面积
int main() {int n;cin >> n;vector<long> h(n+1);for (int i = 1; i <= n; i++)cin >> h[i];vector<vector<long>> dp(n+1, vector<long>(n+1));for (int i = 1; i <= n; i++)dp[i][i] = h[i];int min_h;// for (int i = n-1; i >= 1; i--)// {//for (int j = i; j <= n; j++)// {// min_h = h[i];// for (int k = i; k <= j; k++)// min_h = min_h < h[k] ? min_h : h[k];// dp[i][j] = (min_h *(j - i + 1)) > dp[i][j - 1] ? (min_h *(j - i + 1)) : dp[i][j - 1];// dp[j][i] = dp[i][j] = dp[i][j] > dp[i + 1][j] ? dp[i][j] : dp[i + 1][j];// }// }for (int j = 1; j<=n; j++){for (int i = j-1; i >= 1; i--){min_h = h[i];for (int k = i; k <= j; k++)min_h = min_h < h[k] ? min_h : h[k]; dp[i][j] = (min_h *(j - i + 1)) > dp[i][j - 1] ? (min_h *(j - i + 1)) : dp[i][j - 1];dp[j][i] = dp[i][j] = dp[i][j] > dp[i + 1][j] ? dp[i][j] : dp[i + 1][j];}}for(int i=0;i<=n;i++){cout << dp[1][i] << '\0';}return 0; }
这里面,dp[i][j]代表从i到j的最大矩形面积。首先dp[i][i]就是该高度下的单个矩形面积。我们需要存储从i到j的最小高度,因为多加一个柱状图,我们需要判断以最小高度为高的矩形面积,比原来的最大矩形面积相比的结果。我们需要通过比较dp[i][j-1]和dp[i+1][j]以及新计算的面积三个来得到dp[i][j]。程序中加黑字体中,第一行将dp[i][j-1]和新面积相比,将最大值赋给了dp[i][j],但是这并不是最终的结果,因为如果dp[i+1][j]中的面积要大于这两个,我们就会漏掉。所以第二行也很必要。一定不能丢。
上述的过程不好理解的话,就理解下边界情况,如果就两个直方图,我们需要比较这两个单独的面积以及两个并在一起的面积,必须比较完这三个才能得到最大的面积。
(2)其实这道题还可以用单调栈来做,具体做法见上一篇《单调栈以及应用》,这里不再赘述。
转载于:https://www.cnblogs.com/mini-coconut/p/9108434.html
美团笔试最大矩形面积相关推荐
- 【刷题】美团笔试训练
美团点评2017秋招笔试编程题 试题链接 1. 大富翁游戏 大富翁游戏,玩家根据骰子的点数决定走的步数,即骰子点数为1时可以走一步,点数为2时可以走两步,点数为n时可以走n步.求玩家走到第n步(n&l ...
- java 最大矩形_最大矩形面积
34 ''' 分治法:最大矩形面积只可能有三种情况: 1. 取决于高度最小的柱子,此时面积等于高度乘总长度: 2. 最大面积出现在高度最小的柱子左边: 3. 最大面积出现在高度最小的柱子右边: ''' ...
- sdut 2401 最大矩形面积
1http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2401 /* 2 最大矩形面积,把边界点加上 ...
- 语音计算矩形面积_LeetCode85-最大矩形
今天在制作书签的时候 突然想到了一个问题 如果要送给未来的女朋友一个书签 上面该写些什么话 哈哈哈哈哈哈哈哈哈 The Spring is coming! 想了一会儿,觉得这句话最合适 To xxx: ...
- 编写矩形类 计算矩形面积
编写矩形类 计算矩形面积 public class juxing {int a;int b; juxing(int a,int b){System.out.println("矩形面积s=&q ...
- 题目 1471:【蓝桥杯】【入门题】【基础练习VIP】矩形面积交
题目 1471:矩形面积交 蓝桥杯刷题群已成立,微信后台回复[蓝桥杯],即可进入. 如果加入了之前的社群不需要重复加入. 时间限制: 1Sec 内存限制: 128MB 1. 题目描述 平面上有两个矩形 ...
- [学习笔记]矩形面积并
常用的套路 各种合法矩形限制.合法区间对的限制,都可以转化为矩形面积并 如:省选模拟赛第十四轮.[ZJOI2019]语言 还有直接矩形:(HDU 1542) Atlantis 矩形面积并--扫描线.C ...
- 线段树求矩形面积并 扫描线+离散化
顾名思义,扫描法就是用一根想象中的线扫过所有矩形,在写代码的过程中,这根线很重要.方向的话,可以左右扫,也可以上下扫.方法是一样的,这里我用的是由下向上的扫描法. 如上图所示,坐标系内有两个矩形.位置 ...
- python【蓝桥杯vip练习题库】BASIC-18 矩形面积交(线段交)
试题 基础练习 矩形面积交 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴.对于每个矩形,我们给出它的一对相对顶点的坐标,请你 ...
最新文章
- 【tensorboard】从tensorboard上看出模型是否存在过拟合
- 4.通过Ubuntu指令生成GIF图片
- python学习之路
- ThinkPHP的field方法的用法总结
- 使用 detours 框架 hook 函数
- UAC bypass 理论学习
- ubuntu20.04中gedit使用markdown插件(没搞定)
- python杀死了excel_Python杀死了Excel|自动更新表格,告别繁琐
- python的pip_同时装了Python3和Python2,怎么用pip?
- 采用python解决实际问题_应用 Python 解决一些实际问题
- 《0bug-C/C++商用工程之道》首版勘误表
- linux服务器端口的状态,Linux查看端口状态及关闭端口方法
- 多缝夫琅禾费衍射matlab,用matlab实现夫琅禾费多缝衍射代码
- Arduino mixly 点灯科技(blinker) 在线电压监测(带电压高低提醒)
- ★自助饮料售卖机,C语言 编辑题
- python 二值化细化_Python - 图像的细化(骨架抽取)
- 华为交换机ntp自动校时配置
- 开水果店的水果怎么保鲜,新手开水果店水果保鲜方法
- Java基础or介绍骚话
- [Python]numpy数据分析练习[21~30]
热门文章
- SqueezeNet网络模型详解
- 启动标志_牛股启动的标志:天衣无缝。
- 删除 Mac AppStore 正在下载的应用
- Any problem in computer science can be solved with another layer of indirection
- 用Python编写博客导出工具
- winxp 安装apache php,WinXP-Apache-PHP5-MySQL-phpMyAdmin环境安装
- MySQL探秘(五):InnoDB锁的类型和状态查询
- 联想电脑如何下载matlab,lenovo utility是什么软件?
- java解压gz文件
- Tomcat 6 数据源配置