【JZOJ 5049】 腐女的生日
Description
腐女要过生日了,pty 想给腐女送礼物,但是腐女所在的教室离pty 的教室太远了,于是pty就拜托会动归和A星的djy帮忙送礼物。djy在学校建立了一个平面直角坐标系,他站在了(0,0)点,腐女在(x0,y0)点,djy每次只能往上下左右四个方向移动一步,中间有n栋矩形教学楼,每个教学楼给出两个对角的坐标,并且保证每栋教学楼的周围区域(如图所示)不会有别的教学楼,即djy可以绕一个教学楼走不会碰到任何障碍,现在djy 想知道从起点到终点不碰到任何教学楼,最短需要多少步。
100%的数据保证:n<=10^5
保证所有的y坐标在[-10^6,10^6]
所有的x坐标在[0,10^6]
Analysis
首先,移动的距离包括横着走跟竖着走移动的距离
发现除了如下图一种情况外,其余都只会往右走
这种情况也只需往左走一步,可以特判掉
考虑扫描线,从左到右不会折返,用一颗线段树记录到达扫描线不同高度的纵坐标花费
出现矩阵把对应区间赋为正无穷,消失矩阵重新更新(赋值),发现只能从矩阵外两端走过来
是两个一次函数,找出分界点用线段树维护(一次函数赋值标记)即可