题目:

洛谷3467

分析:

(ti jie shuo)这题是个单调栈经典题。

单调栈就是栈元素递增或递减的栈,这里只考虑递增。新元素入递增栈时,先将所有比它大的元素弹出,然后让新元素入栈,这样保证栈顶永远是最大的元素,代码如下:(\(a\)是新元素)

    while(top>0&&stack[top]>a)top--;
stack[++top]=a;

然后来分析这道题。我这种蒟蒻乍一看一脸懵逼,但是可以注意到这样一个事实:

如果先让每个楼都贴一张海报(\(ans=n\)),如果两栋高度相同的楼之间没有比它们矮的楼,这两座楼就可以用一张海报覆盖(\(ans\)--),而中间那些比它们高的楼仍然每个楼需要一张海报。如下图(然而如果两栋楼之间有一栋比它们低的楼就不可以,因为题目要求海报不能超出建筑物)



然后这个题就很简单了,对于每一座楼都把栈里比他高的弹出去,然后如果此时栈顶跟它一样,就说明两栋楼可以用一张海报。

(由于这座楼的限制,后面比它高的楼都不能和这座楼前面比它高的楼公用海报,所以要弹出)

代码:

#include<algorithm>
#include<cstdio>
using namespace std;
int n,stack[250010],top,trash,ans;
int main(void)
{
scanf("%d",&n);
scanf("%d%d",&trash,&stack[0]);
ans=n;
for(int i=1;i<n;i++)
{
int a;
scanf("%d%d",&trash,&a);
while(top>0&&stack[top]>a)top--;
if(a==stack[top])ans--;
else stack[++top]=a;
}
printf("%d",ans);
return 0;
}

【洛谷3467/BZOJ1113】[POI2008]海报PLA-Postering(单调栈)的更多相关文章

  1. BZOJ1113 Poi2008 海报PLA【单调栈】【水】

    BZOJ1113 Poi2008 海报PLA Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250 ...

  2. 洛谷P1823 [COI2007] Patrik 音乐会的等待(单调栈+二分查找)

    洛谷P1823 [COI2007] Patrik 音乐会的等待(单调栈+二分查找) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1333275 这个题不是很 ...

  3. bzoj1113: [Poi2008]海报PLA

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  4. 洛谷.5300.[GXOI/GZOI2019]与或和(单调栈)

    LOJ BZOJ 洛谷 想了一个奇葩的单调栈,算的时候要在中间取\(\min\),感觉不靠谱不写了=-= 调了十分钟发现输出没取模=v= BZOJ好逗逼啊 题面连pdf都不挂了 哈哈哈哈 枚举每一位. ...

  5. [洛谷P1823]音乐会的等待 题解(单调栈)

    [洛谷P1823]音乐会的等待 Description N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没 ...

  6. BZOJ1113 [Poi2008]海报PLA 【分治 + 线段树】

    题目链接 BZOJ1113 题解 显然只与高有关,每次选择所有海报中最低的覆盖所有海报,然后分治两边 每个位置会被调用一次,复杂度\(O(nlogn)\) \(upd:\)智障了,,是一道\(O(n) ...

  7. 洛谷P4425 转盘 [HNOI/AHOI2018] 线段树+单调栈

    正解:线段树+单调栈 解题报告: 传送门! 1551又是一道灵巧连题意都麻油看懂的题,,,,所以先解释一下题意好了,,,, 给定一个n元环 可以从0时刻开始从任一位置出发 每次可以选择向前走一步或者在 ...

  8. 洛谷 P2947 [USACO09MAR]向右看齐Look Up【单调栈】

    题目描述 Farmer John's N (1 <= N <= 100,000) cows, conveniently numbered 1..N, are once again stan ...

  9. 洛谷P1198 [JSOI2008]最大数(线段树/单调栈)

    题目链接: https://www.luogu.org/problemnew/show/P1198 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询 ...

随机推荐

  1. 多校 1010 Taotao Picks Apples(补题)

    >>点击进入原题<< 思路:题解很有意思,适合线段树进阶 考虑每次修改不叠加,因此我们可以从如何对原序列进行预处理着手.通过观察可以发现,将原序列从任意位置断开,我们可以通过分 ...

  2. noip模拟赛 洗澡

    分析:首先肯定是要用线性筛把素数全部给筛出来的,然后可以维护一个前缀和数组记录1~i个素数的和,对于每一个询问可以从n到1+k枚举它的右端点,然后利用前缀和统计一个长度为K的区间和,看看是不是满足条件 ...

  3. scrapy——中间件UserAgent代理

    pip install fake-useragent 使用说明:from fake_useragent import UserAgent# 实例化一个UserAgent对象ua = UserAgent ...

  4. 最小生成树 C - Building a Space Station

    You are a member of the space station engineering team, and are assigned a task in the construction ...

  5. kendo grid 报错:length

    其实是:events中的{}Onsave的问题,把events整个注释掉就好了

  6. [转] python 获取本机ip地址的两种实现方法

    #!/usr/bin/python import socket import fcntl import struct def get_ip_address(ifname): s = socket.so ...

  7. Ubuntu 16.04修复PDF默认使用ImageMagick打开无法设置其它默认的问题(默认打开程序设置)

    打开:~/.config/mimeapps.list 去掉以下几项: image/pdf=display-im6.desktop image/pdf=display-im6.q16.desktop;d ...

  8. ORACLE database console无法登陆

    登陆EM时给我报这个错 Code d'erreur : ssl_error_weak_server_cert_key 仅仅须要关闭EM的SSL就好了 [oracle@ace-PROD1 ~]$ emc ...

  9. Linux下使用Vi是方向键变乱码 退格键不能使用的解决方法

    在Linux下编辑一些文件.这就涉及到了vi这个编辑器了.在Linux下,初始使用vi的时候有点问题.就是在编辑模式下使用方向键的时候,并不会使光标移动,而是在命令行中出现[A [B [C [D之类的 ...

  10. map, string 强大的STL

    hdu 1247  Hat's Words Input Standard input consists of a number of lowercase words, one per line, in ...