『dsu、Trie』Day8

可持久化并查集这玩意真的有用吗。?

upd on Sept:学了,不过就是按秩合并然后用可持久化数组分别存 fa 和 dep/siz。

Stamp Rally

kruskal 重构树板子,套上二分求一下祖先即可。

AND-MEX Walk

注意到答案只可能是 0,1,2。

因为 1 和 2 显然不能同时存在。

证明:可知边权序列不增,如果前面出现 2 则说明第 1 位是 0,由于是与运算所以不可能有 1 了。

判断 0 和 1 即可。

0 好判断,只要全不为 0,也就是最后一个数不为 0。那么必然有一位满足所有 wi 在第 i 位都是 1。用 log 个并查集即可。

1 有点难。首先肯定保证会有一段 0 的后缀,不然答案是 0。那么前面的数都要 > 1。

所以只要有 1 位使得这些数都是 1,基本就符合条件了。

考虑这种情况,前面一堆 w=3,中间有一个 w=1,答案就不是 1 了。

所以还要保证,我们使用 1 ~ w 的位数去一直走,走到最后一个数后面是一个偶数,消除这种可能,这是容易的。

销售基因链

将字符串排序,可以在 trie 上找到给出的前缀对应的区间。

然后用可持久化 trie 找区间内这样的后缀有几个。

注意 trie 循环外面要更新 son。

另解:对前缀字典树节点重编号使得区间连续,在另一科树上合并 ds。


fusion tree

trick:01trie 支持全局加 1。

交换 01 子树,递归 1 子树即可。

trick:维护全局异或和。

每个点建一棵 trie,动态开点,每次可以加一个 pushup 维护信息。

posted @   LCat90  阅读(13)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示