Link
Solution
超神线段树,又叫超哥线段树,又叫李超线段树 在线段树的节点上存储直线,当添加新的直线的时候按照交点讨论选择将一条线压到子区间 首先,如果一条直线被另一条完全覆盖,可以直接把被覆盖的扔掉(但其实不需要单独讨论) 然后对于两条直线,设在点处取值较大的直线为,另一条为。 如果两线段的交点在区间中点左侧,把压到左半区间 否则将压到右半区间 查询的时候,在覆盖该点的所有线段树节点存储的直线中取一个最大值即可。
Code
1 | //Code by Lucida |
超神线段树,又叫超哥线段树,又叫李超线段树 在线段树的节点上存储直线,当添加新的直线的时候按照交点讨论选择将一条线压到子区间 首先,如果一条直线被另一条完全覆盖,可以直接把被覆盖的扔掉(但其实不需要单独讨论) 然后对于两条直线,设在点L处取值较大的直线为l1,另一条为l2。 如果两线段的交点在区间中点左侧,把l1压到左半区间 否则将l2压到右半区间 查询的时候,在覆盖该点的所有线段树节点存储的直线中取一个最大值即可。
1 | //Code by Lucida |