题解:P5460 [BJOI2016] IP地址
link。
看完发现显然可以在 Trie 树上预处理可持久化线段树,看题解后发现可以,但还有另一种做法,就写了一下。
首先将询问离线,这样每个问题的答案就是 \(ans([1,b])-ans([1,a])\),于是我们可以维护每个时刻的 Trie 树,并在上面打标记。发现每次修改只会影响该点的子树,而且如果下推标记时遇到一个有结束标记的点就停止下推。这样就做完了,注意下推标记时如果出现没有的儿子要建出来,类似动态开点线段树。时间复杂度显然为 \(O(n+q)\)。

浙公网安备 33010602011771号