题目链接
题意:给出n座大楼的位置以及高度,再给出m个人的位置,查询给出的人的位置所能看到的最大的仰角是多少。
思路:维护每两座的楼之间的斜率,使之成为一个凸面,用栈来维护,听了GG小伙伴的思路,可以将人当作高度为0的大楼来带入计算。
代码:
#include
#include
#include
#include
#include
using names...
分类:
其他好文 时间:
2014-09-23 17:37:24
阅读次数:
200
题意:一个人在x轴上,他的左右两侧都有高楼,给出楼的横坐标Xi和高度Hi还有人的位置pos,求人所能看到的天空的最大角度。分析:将建筑物和人的位置从左到右排序,对于每个位置利用栈求一次人左边建筑物的凸包,找到一个最小的角度,然后对称一下,再找一个右边的建筑物的最小角度,两个角度加起来就是答案。将人左...
分类:
其他好文 时间:
2014-09-23 00:10:53
阅读次数:
245
HDU 5033 Building
题目链接
思路:利用单调栈维护建筑建的斜线,保持斜率单调性,然后可以把查询当成高度为0的建筑,和建筑和在一起考虑,从左往右和从右往左各扫一遍即可
代码:
#include
#include
#include
#include
#include
using namespace std;
const int N = 200005;...
分类:
其他好文 时间:
2014-09-22 18:21:39
阅读次数:
142
题目链接:hdu 5033 Building
题目大意:城市里有n座摩天大厦,给定每栋大厦的位置和高度,假定大厦的宽度为0。现在有q次查询,表示人站的位置,人的高度视为0,问说可以仰望天空的角度。
解题思路:比赛的时候用单调性优化直接给过了,对于每个大厦来说,记录左右两边与其形成斜率最大的大厦序号以及斜率,然后每次查询是,通过二分确认人所在位置属于哪两栋大厦之间,然后分别向左向右确认角...
分类:
其他好文 时间:
2014-09-22 16:52:02
阅读次数:
187
题意:给一些建筑物,x表示横坐标,h表示高度,然后查询某些坐标x,问从该点看向天空的最大张角是多大。解法:离线操作,读入所有数据,然后按x升序排序,对每一个查询的x,先从左到右,依次添加x坐标小于x的建筑物,加入一个建筑物的条件:1.此建筑物高度大于栈中的前一个,这个必然是最优的。2.加入这个建筑物...
分类:
其他好文 时间:
2014-09-22 00:55:01
阅读次数:
306
02 hdu 5033 Building
题目意思:
数轴上有n根柱子,每根柱子有个位置坐标和高度,有q个询问,询问从位置qi能看到的角度(保证左右至少有一个柱子)
解题思路:
单调栈维护一个凸性柱子序列。
离线处理所有的查询,排序,然后扫一遍qi,把柱子插进去,更新单调栈。注意查询位置也要更新栈。
代码:
//#include
#include
#include
#include...
分类:
其他好文 时间:
2014-09-22 00:25:41
阅读次数:
253
题意:
给出N幢摩天大楼的位置和高度,有Q次查询,问在某点处能看见天空的角度范围。
分析:
一开始的想法是维护一个单调栈,首先离线数据并排序排序,然后左右扫两边。单调栈内大楼的高度要递减,然后判断栈顶元素是否比它的前一个更优,如果不是则出栈。但是如果栈顶元素比它前一个优,并不能保证是全局最优的。
正确的维护方法是保证单调栈内的大楼高度递减,而且要使得这些大楼的最高点构成一个类似凸包的形状,或者说是凸包的一部分,然后再判断栈顶元素和它前一个比是否更优,如果不是则出栈。这样最后的栈顶元素就是待查询点在某方向的视...
分类:
其他好文 时间:
2014-09-21 23:18:21
阅读次数:
307
http://acm.hdu.edu.cn/showproblem.php?pid=50332014 ACM/ICPC Asia Regional Beijing Online B 1002BuildingTime Limit: 10000/5000 MS (Java/Others)Memory L...
分类:
其他好文 时间:
2014-09-21 20:56:41
阅读次数:
314
If you're thinking about building anappand want to know what it takes to get an app approved byApple, check out what Jason Becker has to say on the to...
分类:
移动开发 时间:
2014-09-21 13:49:40
阅读次数:
289