可以很容易的发现,如果选了最高的房子,那么就不能再选了:否则在左边选一坨合法的,在右边选一坨合法的,拼起来还是合法的. 所以我们可以处理出,每个数的控制区间[L,R] (保证这个区间是其他数都小于它的极大区间),以及左边右边最大的比它小的数的位置(在区间里). 这样我们就可以做到类似线段树的分割并合并区间的答案. 但还有一个问题,,,这样建树的话,最高深度可能是O(N)的,这样不就gg了??? 但是数据是随机的啊,,,期望log N. (好像这种根据权值分割树的数据结构叫笛卡尔树?) #inc…