拿和题目中一样的单调栈给所有二元组搞出来一颗笛卡尔树,每个询问的答案好像就是区间两个端点对应的结点的LCA与区间左端点对应的结点的最短路径上下标在该区间内的点的个数?
好像接下来可以树上倍增,但蒟蒻楼主不会,就想出来了更脑瘫的写法:
先把LCA求出来并记录,然后树的重心求出来,然后给整棵树换根(换成重心),之后对着重心点分治,一边点分治一边统计......
感觉还不如离线之后树状数组(楼主写假了)和倍增(楼主不会)简单......