2015 UESTC 数据结构专题G题 秋实大哥去打工 单调栈

秋实大哥去打工

Time Limit: 1 Sec  Memory Limit: 256 MB

题目连接

http://acm.uestc.edu.cn/#/contest/show/59

Description



天行健,君子以自强不息。地势坤,君子以厚德载物。

天天过节的秋实大哥又要过节了,于是他要给心爱的妹子买礼物。但由于最近秋实大哥手头拮据,身为一个男人,他决定去打工!

秋实大哥来到一家广告公司。现在有n块矩形墙从左至右紧密排列,每一块高为Hi,宽为Wi。

公司要求秋实大哥找出一块最大的连续矩形区域,使得公司可以在上面贴出最大的海报。

Input

第一行包含一个整数n,表示矩形墙的个数。

接下来n行,每行有两个整数Wi,Hi,表示第i块墙的宽度和高度。

1≤n≤200000,保证Wi,Hi以及最后的答案<231。

Output

最大的连续矩形的面积。

Sample Input

3
3 4
1 2
3 4

Sample Output

14

HINT


题意


题解:

初看这道题,啊好难啊
其实仔细思考一下很简单的
首先我们离散化一下下,然后我们再随便搞一搞
用两个单调栈维护以这个矩形为高最多往左和右延伸多少~
然后随便搞一搞就好了

代码:

 

//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 200001
#define mod 10007
#define eps 1e-9
//const int inf=0x7fffffff;   //无限大
const int inf=0x3f3f3f3f;
/*
inline ll read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
int buf[10];
inline void write(int i) {int p = 0;if(i == 0) p++;else while(i) {buf[p++] = i % 10;i /= 10;}for(int j = p-1; j >=0; j--) putchar('0' + buf[j]);printf("\n");
}
*/
//**************************************************************************************
using namespace std;
long long a[maxn],b[maxn],ans;
int r[maxn],l[maxn];
stack<int> s;
int main()
{int n;scanf("%d",&n);a[0]=a[n+1]=-1;for(int i=1;i<=n;i++){scanf("%d",&b[i]);b[i]+=b[i-1];scanf("%lld",&a[i]);}s.push(0);int p=0;for(int i=1;i<=n;i++){for(p=s.top();a[p]>=a[i];p=s.top())s.pop();l[i]=p+1;s.push(i);}while(!s.empty())s.pop();s.push(n+1);for(int i=n;i>0;i--){for(p=s.top();a[p]>=a[i];p=s.top())s.pop();r[i]=p-1;s.push(i);}for(int i=1;i<=n;i++)ans=max(ans,((b[r[i]]-b[i-1])+(b[i-1]-b[l[i]-1]))*a[i]);printf("%lld\n",ans);return 0;
}

 

转载于:https://www.cnblogs.com/qscqesze/p/4427282.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle怎么通过sid确定表名,如何获取Oracle的SID列表

更好的方法是&#xff0c;如果您有权访问主机并且Oracle安装使用以下命令&#xff1a;lsnrctl status。这适用于Unix&#xff0c;Linux和Windows机器。 status命令将显示所有监听器(及其相关的SID)。C:\>lsnrctl statusLSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Pr…

51 Nod 1007 正整数分组【类01背包】

1007 正整数分组 基准时间限制&#xff1a;1 秒 空间限制&#xff1a;131072 KB 分值: 10难度&#xff1a;2级算法题将一堆正整数分为2组&#xff0c;要求2组的和相差最小。例如&#xff1a;1 2 3 4 5&#xff0c;将1 2 4分为1组&#xff0c;3 5分为1组&#xff0c;两组和相差1…

YTU 2924: 文件操作--二进制文件读入

2924: 文件操作--二进制文件读入 时间限制: 1 Sec 内存限制: 128 MB提交: 58 解决: 20题目描述 现有100名学生的姓名(name)、学号(num)、英语(English)、数学(Math)、语文(Chinese)成绩存储在一个二进制文件student.dic中(姓名用char[20]&#xff0c;学号和各科成绩用int存储…

oracle 9.2.0.4,CentOS 4.7 安装Oracle 9.2.0.4的一些问题

#vi/etc/sysconfig/iptables&#xff0c;增加如下-A INPUT -p udp -s 0/0 -d 0/0 --dport 177 -j ACCEPT-A INPUT -p tcp -s 0/0 -d 0/0 --dport telnet -j ACCEPT-A INPUT -p tcp -s 0/0 -d 0/0 --dport ssh -j ACCEPT-A INPUT -p tcp -s 0/0 -d 0/0 --dport login -j ACCEPT-…

《机电传动控制》----学习笔记六

《机电传动控制》与其他学科的联系 1、《液压传动与气压传动》中提到的液压控制阀中的电液伺服阀与《机电传动控制》中的控制电动机里的伺服电机有着密切的联系&#xff0c;都要求我们对伺服系统有着很好的理解。 2、《电路理论》中电机作为独立的一章&#xff0c;讲到了用向量…

Oracle Imp and Exp (导入和导出) 数据 工具使用

Oracle 提供两个工具imp.exe 和exp.exe分别用于导入和导出数据。这两个工具位于Oracle_home/bin目录下。 导入数据exp 1 将数据库ATSTestDB完全导出,用户名system 密码123456 导出到c:\export.dmp中 exp system/123456ATSTestDB filec:\export.dmp fully 其中ATSTestDB为数据库…

[Oracle][Corruption]究竟哪些检查影响到 V$DATABASE_BLOCK_CORRUPTION

根据 471716.1&#xff0c;11g 之后&#xff0c;下列动作如果遇到坏块&#xff0c;都会输出记录到 V$DATABASE_BLOCK_CORRUPTION。- Analyze table .. Validate structure- CTAS(Create table as Select)- Export另外&#xff0c;这些也会记录的&#xff1a;RMAN > Vali…

oracle使用loop将增加十天,使用loop循环操作DML语句

---loop循环&#xff1a;--创建测试表&#xff1a;suxingPROD>create table total3(2 t1 number(8),3 t2 number(8),4 cr date default sysdate);Table created.#测试表已经创建。--查看表中原来的数据&#xff1a;suxingPROD>select * from total3;T1 T2 CR-…

iOS富文本

iOS富文本 背景&#xff1a;前些天突然想做一个笔记本功能&#xff0c;一开始&#xff0c;觉得挺简单的呀&#xff0c;一个UITextView,网络缓存也不干了&#xff0c;直接本地NSUserDefault存储&#xff0c;然后完事了&#xff0c;美工&#xff0c;弄几张好看的图片&#xff0c;…

SQL编程题-----1

首先&#xff0c;题目给出这个数据库表格 要求写出SQL语句使之变成如下表格 解决方法&#xff1a; SELECT t1.Rq,t1.胜,t2.负 FROM //t1和t2是自己命的新表格的名字 (SELECT Rq,COUNT(*) AS 胜 //As 胜意思是输出结果时列名为”胜“FROM testtableWHERE Sh…

maven设置jdk版本

两种方式&#xff1a;一、可以修改 MAVEN 的 setting.xml 文件&#xff0c;统一修改。<profiles> <profile> <id>jdk-1.6</id> <activation> <activeByDefault>true</activeByDefault>…

获取系统时间出错oracle-,oracle 获取系统时间(转)

Oracle中如何获取系统当前时间select to_char(sysdate,yyyy-mm-dd hh24:mi:ss) from dual;ORACLE里获取一个时间的年、季、月、周、日的函数select to_char(sysdate, yyyy ) from dual; --年select to_char(sysdate, MM ) from dual; --月select to_char(sysdate, dd ) f…

PHP环境搭建

以Apache模块运行PHP环境搭建方法 下载Apache 注意&#xff1a;在http://www.apachelounge.com/ 下载Apache&#xff0c;因为该网站提供的Apache是通过更高版本的VC编译器编译的。由于接下来我下载的PHP版本是VC11的&#xff0c;所以下载的Apache版本也是基于VC11的。 download…

Java语言中的-----访问修饰符

day04 Java语言中的----访问修饰符一、访问修饰符概述&#xff1a;访问修饰符就是对变量或者是方法或者是类的一个修饰&#xff0c;通过修饰以后实现一些必要的权限&#xff0c;主要是说明类成员如何被使用的作用。二、访问修饰符1、访问修饰符有哪些&#xff1f;访问修饰符总共…

六角填数---第五届蓝桥杯

/** 如图【1.png】所看到的六角形中&#xff0c;填入1~12的数字。使得每条直线上的数字之和都同样。图中&#xff0c;已经替你填好了3个数字&#xff0c;请你计算星号位置所代表的数字是多少&#xff1f;请通过浏览器提交答案。不要填写多余的内容。*/ public class 六角填数 {…

linux命令编写,编写简单的linux命令

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;又到了周四分享环节&#xff0c;鉴于最近在看linux编程实践&#xff0c;所以就的讲一下如何编写一个简单的who命令。PPTManual PageManual Page 也就是大家常用的m…

如何在ASP.NET 5和XUnit.NET中进行LocalDB集成测试

今天继续昨天的话题——单元测试&#xff0c;不过是在ASP.NET 5中的单元测试。 在当前的Visual Studio 2015 CTP6中&#xff0c;MSTest是不支持对ASP.NET 5项目进行单元测试的。因而&#xff0c;要对ASP.NET 5进行单元测试&#xff08;或集成测试&#xff09;&#xff0c;就需要…

mysql数据库详解(续一)

第三节 配置MYSQL数据库配置mysql数据库通常通过命令行选项、配置文件、和环境变量来进行&#xff0c;并且优先顺序也是命令行最高&#xff0c;环境变量优先级最低。1、配置文件定位mysql的配置文件可以在以下四个位置&#xff1a;(按照查找顺序)1、/etc/my.cnf2、DATADIR/my.c…

ImageLoader设置圆形图片

//自定义MyApplication类&#xff0c;需要在列表清单中设置 <application android:name"com.ce.image.MyApplication"//将类的名称赋给这个application package com.ce.image;import com.nostra13.universalimageloader.core.DisplayImageOptions;import …

用户模式 内核模式 linux,linux – “内核模式”和“用户模式”硬件...

内核模式和用户模式是硬件功能,特别是处理器的功能.专为中高端系统(PC,功能手机,智能手机,除最简单的网络设备之外的所有系统……)设计的处理器都包含此功能.内核模式可以使用不同的名称&#xff1a;管理程序模式,特权模式等.在x86(PC中的处理器类型)中,它被称为“ring 0”,用户…