Description

在某条街上有着这么一行比较奇怪的建筑物:每栋建筑物都是一个矩形,而且他们是一
个挨着一个的。每栋建筑物都有它的宽度和高度。
Task:现在从左到右给出N 栋建筑物的信息。其中每栋建筑物的信息包括它的宽度和
高度。然后现在交给你一个刷墙任务:你每一次刷墙的形状都必须是一个矩形。问你最少需
要多少次才能把所有建筑物都刷完?

Input

输入文件的第一行有一个整数N(1≤N≤1061≤N≤10^6)。
接下来有N 行,每行有两个整数Wi 和Hi(1≤Wi,Hi≤231−11≤Wi,Hi≤2^{31}-1,分别表示每栋建筑物
的宽度和高度。
注意,建筑物是从左到右一个紧挨着一个的。如果你还不明白这句话是什么意思,那么
就请看样例的图示吧!!!!

Output

输出文件仅包含一个整数,表示你最少需要多少次才能完成这次刷墙任务。

Sample Input

5

1 2

1 3

2 2

2 5

1 4

Sample Output

4

Data Constraint

Hint

数据约定:
对于40%的数据,1≤N≤50001≤N≤5000
对于80%的数据,1≤N≤2500001≤N≤250000
对于100%的数据,1≤N≤1061≤N≤10^6

Solution

  • 观察题目,可以发现一个神奇的性质:

  • 一栋建筑物的宽是毫无作用的!!!,与之可以直接视为 1 !

  • 为什么呢?因为在同一栋建筑物中,高相等,原来怎么刷,就还是怎么刷。

  • 那么问题就转化成简单的单调栈——粉刷栅栏问题了!

  • 维护一个递增的单调栈,按高度进行

  • 当这一高度比前一高度低时,就不断弹栈,同时答案 +1 ,直到保持单调

  • 如此不断进行,最后再加上栈中元素个数即可!

  • 这样时间复杂度为 O(N)O(N) ,轻松 AC

Code

#include<cstdio>
using namespace std;
int ans,top;
int stack[1000001];
inline int read()
{int data=0; char ch=0;while(ch<'0' || ch>'9') ch=getchar();while(ch>='0' && ch<='9') data=data*10+ch-'0',ch=getchar();return data;
}
int main()
{int n=read();for(int i=1;i<=n;i++){int x=read(),y=read();while(y<stack[top]) top--,ans++;while(y==stack[top]) top--;stack[++top]=y;}printf("%d",ans+top);return 0;
}

JZOJ 1220. Pla相关推荐

  1. JZOJ 5461 购物 —— 贪心

    题目:https://jzoj.net/senior/#main/show/5461 贪心,原来想了个思路,优先选优惠价最小的 K 个,然后其他按原价排序遍历: 如果当前物品没选过,原价选上,如果选过 ...

  2. 深度学习:知识回收(Lecture3+4 PLA+Decision Tree)

    Lecture 3 PLA and Lecture 4 Decision Tree 序 Lecture 3 PLA Lecture 4 Decision Tree 特征划分 ID3 信息增益 C4.5 ...

  3. 【BZOJ-1113】海报PLA 单调栈

    1113: [Poi2008]海报PLA Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 896  Solved: 573 [Submit][Stat ...

  4. AppStore 拒绝审核原因:PLA 2.3

    1.前言 最近更新了一下之前开源的一些iOS App,适配了一下iPhone X / Xs / XR / Xs Max,然后收到这样的拒审信: 2018年9月24日 上午1:08 发件人 Apple ...

  5. 分类系列之感知器学习算法PLA 和 口袋算法Pocket Algorithm

    我们有一堆数据,默认他们是线性可分的.  定义f为这个数据分割线的最优解,但是我们不知道他的值.  我们仅有一个函数集H,这个函数一般是无穷大的.我们的目的就是从H中找出一条线g来尽可能的接近f.但是 ...

  6. 通俗解释优化的线性感知机算法:Pocket PLA

    个人网站:红色石头的机器学习之路 CSDN博客:红色石头的专栏 知乎:红色石头 微博:RedstoneWill的微博 GitHub:RedstoneWill的GitHub 微信公众号:AI有道(ID: ...

  7. 一看就懂的感知机算法PLA

    个人网站:红色石头的机器学习之路 CSDN博客:红色石头的专栏 知乎:红色石头 微博:RedstoneWill的微博 GitHub:RedstoneWill的GitHub 微信公众号:AI有道(ID: ...

  8. 【附源码】一看就懂的感知机算法PLA

    AI有道 一个有情怀的公众号 本文所有的源代码均放在了我的GitHub上,需要的点击文末「阅读原文」获取.如果对你有用的话,别忘了Fork和Star哦! 什么是感知机「Perceptron」 PLA全 ...

  9. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫

    Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...

最新文章

  1. 快速搞懂监控、链路追踪、日志三者的区别
  2. 百家中华老字号故宫过大年
  3. 深入理解DOM事件机制
  4. nginx配置ssl(配置文件)
  5. 父元素设置overflow: overlay; 或 overflow: scroll; 或 overflow: auto; 如果子元素超出父元素内容,父元素会被子元素超出部分撑大至子元素同样大小
  6. [spring mvc]Hello World入门
  7. JAVA打印变量类型
  8. 通过IP判断登录地址
  9. 期望为线性的选择算法
  10. TypeError: unhashable type: ‘numpy.ndarray‘
  11. 基于SSM实现图书借阅管理系统-毕业设计
  12. excel常用函数之截取指定字符
  13. python以写模式打开的文件无法进读操作_以写模式打开的文件无法进行读操作。...
  14. 基于RPA的自动化测试研究
  15. 昌吉学院计算机工程系毕业后安排工作嘛,经济贸易分院成功举办昌吉学院与我院本科教学与学生工作对接会...
  16. 安利这几个网站给需要的你
  17. 三个因素剖析质量流量计读数不准,应对故障更轻松
  18. Android高德地图使用自定义指南针
  19. Nginx的 http_image_filter_module 模块使用说明
  20. 从满腹经纶到入行小白:理论学习与实际应用的差距

热门文章

  1. 【Python】创建数组[[0]*n]*m与[[0 for _ in range(n)] for _ in range(m)]的区别
  2. 《等离子体所毕业生经验分享会》观后感 2020-07-03
  3. (Q 2)netstat命令 检测TCP/IP 网络链接是否存在异常
  4. 撒花!斯坦福深度学习最新视频发布,吴恩达主讲!
  5. python中with的用法
  6. uboot更改gpio电平_ECBM系列教程4:单片机的手和脚——GPIO
  7. golang中的flag模块小结
  8. 使用Delphi命名空间
  9. geth测试私链挖矿时发现很很慢,提高速度
  10. Java对象容器——对象数组