51nod 1102 面积最大的矩形
求取:以某矩形g[i]为最小值的区间的左右端点,得到一个临时解。所有临时解中的最大值即为解。
求取区间的方法可以用单调栈,也可以用下面这种十分简洁的类似于递归的方法。下面这种解法求出来的区间是开区间,也正是因为开区间,所以跳转很方便。
L[i]是以第i根柱子为最小值的左开区间点。若g[i] <= g[L[i]],则L[i]=L[L[i]];
打个比方,柱子高度为1,3,9,7,5。g[4]=7,一开始L[4]初始化为3,那么若g[4]<=g[L[4]],即7=g[4]<=g[3]=9,那么L[4]=L[L[4]]=L[3]=2。
#include <stdio.h>
#include <iostream>
using namespace std; #define ll long long
const int maxN=1e5+;
ll N, L[maxN], R[maxN], g[maxN]; int main() {
#ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif
scanf("%lld", &N);
for (int i = ; i <= N; ++i)
scanf("%lld", &g[i]);
for (int i = ; i <= N; ++i) {
L[i] = i - ;
R[i] = i + ;
}
for (int i = ; i <= N; ++i)
while (L[i] && g[L[i]] >= g[i]) L[i] = L[L[i]];
for (int i = N; i >= ; --i)
while (R[i] <= N && g[R[i]] >= g[i]) R[i] = R[R[i]]; ll ans = ;
for (int i = ; i <= N; ++i)
ans = max(ans, g[i] * (R[i] - L[i] - ));
printf("%lld\n", ans);
return ;
}
51nod 1102 面积最大的矩形的更多相关文章
- 51nod 1102 面积最大的矩形 (单调栈)
链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1102 思路: 首先介绍下单调栈的功能:利用单调栈,可以找到从左/ ...
- 51nod 1102 面积最大的矩形(单调栈)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1102 题意: 思路: 做法就是求出每个长方形向左向右所能延伸的最大距离. ...
- 51nod 1102 面积最大的矩形 && 新疆大学OJ 1387: B.HUAWEI's billboard 【单调栈】+【拼凑段】(o(n) 或 o(nlog(n))
题面1:  题面2:  两道题除了数据范围不同,没有任何差异,两道题都可以o(n)(单调栈),o(nlog(n))(我自己的做法)解决. 解题思路1:(单调栈) 对于每个点找到右边第一个比它小的位 ...
- 51nod 1102 单调栈
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1102 1102 面积最大的矩形 基准时间限制:1 秒 空间限制:1310 ...
- 编写一个矩形类,私有数据成员为矩形的长( len)和宽(wid),wid设置为0,有参构造函数设置和的值,另外,类还包括矩形的周长、求面积、取矩形的长度、取矩形的长度、取矩形的宽度、修改矩形的长度和宽度为对应的形参值等公用方法。
class Rectangle { private double len, wid; public Rectangle()//求矩形周长 { len = 0; wid = 0; } public Re ...
- 51NOD 1559:车和矩形——题解
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1559 波雷卡普有一个n×m,大小的棋盘,上面有k个车.他又放了q个矩形在 ...
- hdu 1255 覆盖的面积 (扫描线求矩形交)
覆盖的面积 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- 【51nod】1559 车和矩形
题解 离线读入,我们发现一个矩形能被保护,矩形内部所有列上必定有一辆车,或者所有行上必定有一辆车 分两次进行处理 第一次按照横坐标把车加进去,然后查询最大横坐标在这个位置的矩形,纵坐标区间里的车出现位 ...
- HDU-1255 覆盖的面积 覆盖的矩形面积并
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 需要保存区间覆盖线>=2的线段的长度,根据情况来更新... //STATUS:C++_AC ...
随机推荐
- gulp教程之gulp中文API
1.gulp.src(globs[, options]) 1.1.说明:src方法是指定需要处理的源文件的路径,gulp借鉴了Unix操作系统的管道(pipe)思想,前一级的输出,直接变成后一级的输入 ...
- gradle本地、远程仓库配置--转
https://blog.csdn.net/x_iya/article/details/75040806 本地仓库配置配置环境变量GRADLE_USER_HOME,并指向你的一个本地目录,用来保存Gr ...
- <数据挖掘导论>读书笔记10聚类分析续
基于原型的聚类 模糊c均值使用模糊逻辑和模糊集合论的概念,提出一种聚类方案,它很像K均值,但是不需要硬性地将对象分派到一个簇中.模糊c均值算法有时也称为FCM 混合模型聚类采取这样的访谈,簇集合可以用 ...
- Django models python3搭载mysql
1 django默认支持sqlite,mysql, oracle,postgresql数据库. <1> sqlite django默认使用sqlite的数据库,默认自带sqlite ...
- amazeui笔记-Cookie
- tomcat的8088端口被占用
打开Dos:windows->输入cmd(想必这个都会) 在黑窗口中输入指令:netstat -ano | findstr 8080 指令的意思是找出占用8080端口的进程pid 再 ...
- Metronic 对话 chat
http://keenthemes.com/preview/metronic/theme/admin_1/index.html: jquery让滚动条默认在最底部:$('#content').scro ...
- node错误集合
1.端口被占用 node .\app.js events.js:167 throw er; // Unhandled 'error' even 解决办法:8888端口被占用了,更改一个端口就好 2. ...
- Django(二):url和views
网络通讯的本质是socket,从socket封装到MVC模式,参见另外几篇博客.本节笔记整理自Django2.0官方文档. 一.url调度器 - django.urls.path django2.0中 ...
- Code Signal_练习题_arrayChange
You are given an array of integers. On each move you are allowed to increase exactly one of its elem ...