\(先dfs一遍,idx[i]记录结点i的dfs序,last[i]记录结点i的子树的最后一个结点的dfs序\)
\(用树状数组维护,答案为query(last[a])-query(idx[a]-1)\)
[crayon-60067adccf8e7[……]
\(先dfs一遍,idx[i]记录结点i的dfs序,last[i]记录结点i的子树的最后一个结点的dfs序\)
\(用树状数组维护,答案为query(last[a])-query(idx[a]-1)\)
[crayon-60067adccf8e7[……]
您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:
给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤j-i+1),并且,你可以改变一些a[i]的值,改变后,程序还能针对改变后的a继续回答上面的问题。[……]