P5335 [THUSC 2016] 补退选

推歌推过了今天就不再推了。

传送

考虑暴力,最朴素的暴力就是每次查询都把所有插入操作扫一遍统计前缀。

全都扫一遍太暴力了!既然是字符串题,那么一些基本的数据结构肯定是需要的。比如我们就可以建立一颗字典树,并在这颗字典树上操作。

每次插入字符串 \(S\) 时我们考虑 \(S\) 影响的前缀,发现只有 \(S\) 的前缀会被 \(S\) 影响,那么我们直接在 \(S\) 前缀的每个节点上打个标记记录其有一个该前缀的字符串。如果删去的话把标记去掉一个就好了。

我们发现我们要查询第一次超过某个值的时间。于是我们可以给每个节点维护一个 vector,每次达到了新的最大值就把当前的时间插入进去,查询的时候直接输出即可。

看起来还是很暴力!但是算一下复杂度,发现是 \(O(n|S|)\) 的,完全可以通过!

然后这个题就做完了。个人认为完全没有紫。

posted @ 2025-09-26 11:00  Xuan_qwq  阅读(9)  评论(0)    收藏  举报