BNSONSTR
略
BTTLRYL
(g_{i,j}) 表示还没死的已经处理过了的有 (i) 人,还没死且还没被遍历的有 (j) 人。分情况转移即可。
GRAND
暴力的dp (O(n^2k)) 显然。考虑有用的转移 ((i,j)) 在随机情况下只有 (nlog n) 对,可以用线段树找到这些位置,复杂度为 (O(knlog n+nlog^2n))。再根据随机的性质,对每个位置并不需要记录所有的 (k),考虑若平均分配,(i) 前面有 (frac{ik}{n}) 段,那么只需处理 (frac{ik}{n}±B) 范围内的答案 。(B) 取个 (150) 差不多了。(O(Bnlog n+nlog^2n))
CLAMPWAY
建出两棵树 (T1,T2)。在 (T1) 中,(forall u,vin subtree(u)),在原树上 (path(u,v)) 上的所有点都 (ge u);在 (T2) 则把 (ge) 改成 (le)。若建出了这两棵树,合法的 ((u,v)) 满足在一棵树中 (uin subtree(v)),另一棵中 (vin subtree(u)),用数据结构简单统计
暴力建树(以 (T1) 为例):类似点分治的过程,现在整棵树中找到最小的点为根,然后删除这个点,在剩下的若干子树中分别找到最小点作为根的儿子并删除,往下递归.....复杂度可至 (O(n^2)),或许可用数据结构优化?考虑优化,进行类似上述操作的逆过程:倒叙枚举 (u),枚举所有边 ((u,v)),若 (v>u),则连边 ((u,find(v))),并在并查集中赋值 (fa[find(v)]=u)。总复杂度 (O(nlog n))