HDU - 5033 Building 单调栈(好题)

这篇博客介绍了如何使用单调栈解决HDU 5033题目的建筑视角问题。题目要求在给定的X坐标处计算可以看到的视角角度,保证两侧均有建筑物。作者通过维护斜率绝对值单调递增的栈来解决此问题,将询问点也视为虚拟建筑物,并记录每个点左右侧的最高建筑,最终按顺序输出结果。
摘要由CSDN通过智能技术生成

传送门:HDU 5033

题意:有一排建筑物坐落在一条直线上,每个建筑物都有一定的高度,给出一个X坐标,高度为0,问X位置能看到的视角是多少度,保证X左右有建筑物。

思路:很容易想到用单调栈单调队列什么的去维护,但就是想不出来该怎么维护。。

其实我们应该维护一个相邻两顶点间斜率绝对值单调递增的栈,套路还是单调栈的套路,不过是进出栈的条件变成了斜率的相对大小,然后就是把询问也当建筑物放进去会使代码好写很多,对于每个点记录其左边和右边能看到的最高的建筑物,最后转化一下按询问顺序输出就行了。

代码:

#include<bits/stdc++.h>
#define ll long long
#define pi acos(-1.0)
#define i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值