POJ-2082 terriblesets(堆栈题+阅读理解)
1、关于题面的理解:此题故弄玄虚,题面拗口;实际上不过是求若干连续矩形中的所能构成的最大矩形面积。
2、关于做法:虽然是数据结构题,但这种思维角度值得学习。排序简化+等效转化(还带一点回溯的味道)
ac代码如下:
#include<iostream>
#include<cstdlib>
#include<stack>
using namespace std;
struct rec
{
int w,h;
}data; int main(void){
int n;
while(scanf("%d",&n)&&n!=-){
stack<rec> s;
int lasth=,ans=;
while(n--){
scanf("%d%d",&data.w,&data.h);
if(data.h<lasth){
/*若违反升序原则,则进行等效转化:找到能使得新输入矩阵满足升序的插入位置。在找的同时计算即将删除的这些矩形所能形成的最大矩形面积。
因为事实上除了此时的元素data外,栈中的排列已经是升序的,因此计算最大的过程非常简单。 */
int totalw=,curarea=;
while(s.empty()==&&s.top().h>data.h){
totalw+=s.top().w;
curarea=totalw*s.top().h;
if(curarea>ans)ans=curarea;
s.pop();
}
data.w=totalw+data.w;
/*此时删除的矩形可以等效 替换成data.w=删除部分的总长度+新输入矩形的w,data.h=新输入矩形的高,压栈即可。 */
s.push(data);
}
else{//若升序,则直接插入
s.push(data);
}
lasth=s.top().h;
}
int totalw=,curarea=;
while(s.empty()==){//最后再进行一次遍历
totalw+=s.top().w;
curarea=totalw*s.top().h;
if(curarea>ans)ans=curarea;
s.pop();
}
cout<<ans<<endl;
}
return ;
}
POJ-2082 terriblesets(堆栈题+阅读理解)的更多相关文章
- Codeforces#543 div2 A. Technogoblet of Fire(阅读理解)
题目链接:http://codeforces.com/problemset/problem/1121/A 真·阅读理解 题意就是 有n个人 pi表示他们的强度 si表示他们来自哪个学校 现在Arkad ...
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- P3879 [TJOI2010]阅读理解 题解
P3879 [TJOI2010]阅读理解 题解 题目描述 英语老师留了N篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过. 输 ...
- 阅读关于DuReader:百度大规模的中文机器阅读理解数据集
很久之前就得到了百度机器阅读理解关于数据集的这篇文章,今天才进行总结!.... 论文地址:https://arxiv.org/abs/1711.05073 自然语言处理是人工智能皇冠上的明珠,而机器阅 ...
- Trie树【洛谷P3879】 [TJOI2010]阅读理解
P3879 [TJOI2010]阅读理解 题目描述 英语老师留了N篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过. 输入输出 ...
- HTTPS强制安全策略-HSTS协议阅读理解
https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security [阅读理解式翻译,非严格遵循原 ...
- 用Keras搞一个阅读理解机器人
catalogue . 训练集 . 数据预处理 . 神经网络模型设计(对话集 <-> 问题集) . 神经网络模型设计(问题集 <-> 回答集) . RNN神经网络 . 训练 . ...
- Tensorflow做阅读理解与完形填空
catalogue . 前言 . 使用的数据集 . 数据预处理 . 训练 . 测试模型运行结果: 进行实际完形填空 0. 前言 开始写这篇文章的时候是晚上12点,突然想到几点新的理解,赶紧记下来.我们 ...
- Trie树【P3879】 [TJOI2010]阅读理解
Description 英语老师留了N篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过. Input 第一行为整数N,表示短文 ...
随机推荐
- 搜索R包和查看包的技巧
1.R怎么搜包 # 安装sos包 install.packages("sos") # 导入sos包 library(sos) # 使用函数findFn() 函数里面传入关键字来搜索 ...
- js 一些基础知识
数据类型: 作用域 每个函数都有自己的执行环境,执行环境定义了变量有权访问的其他数据,决定了他们各自的行为. 每个执行环境都有一个与之关联的变量对象(variable object),环境中定义的所有 ...
- Android sharedPreferences 用法
Android 提供了一种数据轻量级的数据持久化方法.使用SharedPreferences 接口 将 key-value 形式的primitive data 存储到文件中.多用于保存软件偏好配置信息 ...
- 小程序 wx.navigateTo传值总结
wx.navigateTo(Object object) 保留当前页面,跳转到应用内的某个页面.但是不能跳到 tabbar 页面.使用 wx.navigateBack 可以返回到原页面.小程序中页面栈 ...
- Spark源码分析 – DAGScheduler
DAGScheduler的架构其实非常简单, 1. eventQueue, 所有需要DAGScheduler处理的事情都需要往eventQueue中发送event 2. eventLoop Threa ...
- SpringBoot 之数据访问
1. Spring Boot 与 JDBC 默认使用 org.apache.tomcat.jdbc.pool.DataSource 数据源; // application.yml spring: da ...
- 自定义HTTP头时的注意事项(转)
原文:https://blog.gnuers.org/?p=462 HTTP头是可以包含英文字母([A-Za-z]).数字([0-9]).连接号(-)hyphens, 也可义是下划线(_).在使用ng ...
- java 多线程 day11 lock
import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock; /** * Create ...
- Java队列存储结构及实现
一.队列(Queue) 队列是一种特殊的线性表,它只允许在表的前段(front)进行删除操作,只允许在表的后端(rear)进行插入操作.进行插入操作的端称为队尾,进行删除操作的端称为队头. 对于一个队 ...
- vmware12 安装linux centos6
内核选 2.6 中文安装选 基本系统 -> 基本, 兼 ...