CF1740H

考虑构造出一个权值为 xx 的数要多少棵叶子,记为 cxc_x

cx=j=0x1cj+1c_x=\sum_{j=0}^{x-1}c_j+1,则 cx=2xc_x=2^{x}

所以权值的值域是 logn\log n 的。

考虑树剖动态 dp

维护轻儿子的值的集合。

这样相当于每次查询一条重链从链底新加的权值推上来得到的权值,对于每个点维护 tou,vlto_{u,vl} 表示往 uu 的轻儿子集合插入 vlvl 后的 mex 值。

发现可以合并,线段树搞就行了,这样是 O(nlog3n)\mathcal O(n\log ^3 n) 的。

发现 tou,vlto_{u,vl} 的不同值只有两种,这样就是 O(nlog2n)\mathcal O(n\log^2n) 的。

posted @ 2023-11-05 12:04  蒟蒻orz  阅读(2)  评论(0编辑  收藏  举报  来源