描述:https://www.luogu.com.cn/problem/P3467


1.考虑如果整个建筑物链是等高的,一张高为链高,宽为整个建筑物宽的海报即可完全覆盖;

2.若有两个不等高的元素组成建筑物链,那么一定需要两张;

3.因为题目要求海报不可超出建筑物链,那么我们即可用单调栈维护:初始海报数为建筑物数,入栈建筑物链的高度序列,当栈顶大于即将入栈元素时弹栈,若最后弹栈元素与即将入栈元素等高,需要的海报数-1;

4.易证明本方法是正确的:当有两个处于一个峰两侧的等高块时,他们可以用一张海报覆盖,所需海报数显然可减少一个;

#include <bits/stdc++.h>
using namespace std;
int n,a[],b[];
int q[],p[];
map<int,int>m;
int ans;
int main()
{
cin>>n;
int ans=;
for(int i=;i<=n;i++)
cin>>a[i]>>b[i];
int tail=,head=;
for(int i=;i<=n;i++)
{
while(tail>=head&&q[tail]>=b[i])
{
if(q[tail]==b[i]) ans++;
tail--;
}
q[++tail]=b[i],p[tail]=i;
}
cout<<n-ans;
}

最新文章

  1. SQL连接
  2. 遍历list、set、map和array
  3. Python全栈之路目录结构
  4. xml、文件操作功能类
  5. Tcpdump使用常用9实例
  6. OD常用断点
  7. Linux中与DNS相关的内容
  8. Spring Batch Framework– introduction chapter(下)
  9. 彻底卸载oracle10g
  10. SKYLINE
  11. S5700交换机配置端口镜像
  12. Erlang OTP gen_event
  13. FUNCTION CALL STACK FRAME
  14. 201521123005 《java程序设计》 第七周学习总结
  15. C# 真正能发邮件的源码
  16. hdu1242 Rescue bfs+优先队列
  17. Hadoop 2.7.4 HDFS+YRAN HA删除datanode和nodemanager
  18. vue2.0自学教程(一):走进vue2.0大观园
  19. LCA&amp;最小生成树
  20. HDU1530 最大流问题

热门文章

  1. alg-链表中有环
  2. 在linux中使用mailx发送邮件
  3. getline()和get()的使用区别
  4. 猜数字和飞机大战(Python零基础入门)
  5. Reward 杭电 2647
  6. Android内存优化—dumpsys meminfo详解
  7. 判断一个字符串是否是合法IP地址
  8. PHP常量:JSON_UNESCAPED_UNICODE
  9. ATmega328P定时器详解
  10. MVC-路由扩展-限制浏览器