题面 传送门 分析 对于每一个数a[i],找到它后面第一个大于它的数a[p],由p向i连边,最终我们就会得到一个森林,且p是i的父亲.为了方便操作,我们再增加一个虚拟节点n+1,把森林变成树. 由于序列不是递增的,不能二分.维护一个单调栈,栈顶元素最小.从n到1依次对每个 数操作,弹出栈里比它小的数.如果栈为空,说明该数是森林中的根节点,向n+1连边.否则栈顶元素就是第一个大于它的数,向它的编号连边即可. 我们发现,对于每个查询区间内的所有数,它对应着树上的某些节点,记为标记节点.如果把标记节点…