不知道为什么网上找不到太多相关的资料,所以写一个小总结,并附有能用的代码,抛砖引玉. 约束RMQ,就是RMQ区间必须满足两项之差最大为1,采用ST表的话,这时候有O(n)建表,O(1)查询的优秀复杂度 求LCA,通过DFS把原树转化为深度序列,就等价于求区间最小值 (取到的位置) 由于DFS的性质,该序列两个数之间显然相差1,所以可以使用约束RMQ解决 先总体概括一下做法:把原序列分块,块内预处理,块间做ST表 分块大小定为L=log(n)/2,这样共分D=n/L块,对这D个数(块内最小值)做正…