做了三天,,,终于a了。。。117242032014-09-25 09:37:44Accepted5033781MS7400K4751 BG++czyBuildingTime Limit: 10000/5000 MS (Java/Others)Memory Limit: 262144/262144 ...
分类:
其他好文 时间:
2014-09-25 10:40:48
阅读次数:
405
题意:
地面上有n座楼 你分别站在m个位置上 问每个位置上能看见多大角度的天空
思路:
很明显能想到在站的位置两边维持单调性 因此我们可以将站位和楼的位置排序 从左到右维护一遍 再从右到左维护一遍 这里可以利用单调栈 对于新扫描到的位置 如果是楼 那么栈中比它矮的楼就没用了可以出栈 如果是站位 可以这样判断 如果可以看见栈底的楼(最高的楼)那么前面的矮楼一定不会影响后...
分类:
其他好文 时间:
2014-09-24 12:53:56
阅读次数:
161
题目链接
题意:给出n座大楼的位置以及高度,再给出m个人的位置,查询给出的人的位置所能看到的最大的仰角是多少。
思路:维护每两座的楼之间的斜率,使之成为一个凸面,用栈来维护,听了GG小伙伴的思路,可以将人当作高度为0的大楼来带入计算。
代码:
#include
#include
#include
#include
#include
using names...
分类:
其他好文 时间:
2014-09-23 17:37:24
阅读次数:
200
题目地址:POJ 2796
单调栈的第一题就是这道。。把我弄的晕头转向。现在终于明白了,对单调栈又加深了理解。原来单调栈不只是可以维护数。
代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
u...
分类:
其他好文 时间:
2014-09-23 12:57:04
阅读次数:
193
题目地址:POJ 3250
初学单调栈。多校和网络赛已经碰到两次了。
单调栈的原理简单的不能再简单了。。就是让栈里的元素从栈顶到栈底呈单调性。
比如说递增单调栈。
每次放进一个数的时候,如果栈顶的数小于要放的数,就把栈顶的数pop出来使得栈里保持单调性。
对于这道题来说,就从右往左开始遍历,建一个递增单调栈。那么每次pop出来的就是当前的牛可以看到的牛数。然后累加即可。
代码如下:
...
分类:
其他好文 时间:
2014-09-23 01:13:53
阅读次数:
289
题意:一个人在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
02 hdu 5033 Building
题目意思:
数轴上有n根柱子,每根柱子有个位置坐标和高度,有q个询问,询问从位置qi能看到的角度(保证左右至少有一个柱子)
解题思路:
单调栈维护一个凸性柱子序列。
离线处理所有的查询,排序,然后扫一遍qi,把柱子插进去,更新单调栈。注意查询位置也要更新栈。
代码:
//#include
#include
#include
#include...
分类:
其他好文 时间:
2014-09-22 00:25:41
阅读次数:
253
真蠢,和网络赛的时候我WA掉的思想已经很接近了,被他们又是说这说那的绕进去了,就是一个单调栈,栈中元素的纵坐标严格降低,并且栈中顶部两点之间斜率的绝对值要小于栈顶点和入栈点的斜率。这样是一个向上凸的图形(如果不考虑后面一个条件,是下凹凸都有的奇怪图形图形,后面计算最近切点时不满足性质,效率会退化),当查询点找到最近切点(姑且称作最近似切点,理解就知道我说的是什么意思了)时,这个点代表的楼房就是影响...
分类:
其他好文 时间:
2014-09-21 23:39:31
阅读次数:
291