【学习笔记】trie树
[BJOI2016]IP地址
数据结构题。
没啥好说的。难点在于想到打懒惰标记。
简单说一下吧。设 f i f_i fi表示节点 i i i的变化次数。下传标记的充要条件是子节点不含插入字符串。
[SCOI2016]背单词
首先有一个基本的事实: t r i e trie trie树上的祖先节点一定最先选择。
考虑自底向上合并。注意到按子树大小从小到大排序即可。答案是每一步合并操作的花费,也就是各节点代价之和。
[Ynoi2011] 竞赛实验班
考察一个子问题。
给定一个序列 { ( a 1 ⊕ x ) ⊕ y , ( a 2 ⊕ x ) ⊕ y , . . . , ( a n ⊕ x ) ⊕ y } \{(a_1\oplus x)\oplus y,(a_2\oplus x)\oplus y,...,(a_n\oplus x)\oplus y\} {(a1⊕x)⊕y,(a2⊕x)⊕y,...,(an⊕x)⊕y},其中前一部分的 a i ⊕ x a_i\oplus x ai⊕x是有序的,问你区间 [ l , r ] [l,r] [l,r]的元素值之和。
对于有序的部分,在 trie \text{trie} trie树上二分 a i ⊕ x a_i\oplus x ai⊕x对应的有序元素中的 [ 1 , r ] [1,r] [1,r],通过记录每一位 0 0 0, 1 1 1的个数就能把异或后的和求出来。
对于无序的部分直接前缀和即可。
每次排序操作相当于把无序的序列合并到有序的序列上面去。
比较蛋疼的地方在于这样 trie \text{trie} trie树上还要统计每个子树中每一位 0 0 0, 1 1 1的数目,这样空间复杂度 O ( n log 2 n ) O(n\log ^2n) O(nlog2n)无法通过。
注意到对于只有一个儿子的节点并不需要存储长度为 26 26 26的数组,这样每次加入时最多只会增加 1 1 1个节点,这样空间少一个 log \log log。
注意到这道题可以离线,那么我们每次单独考虑某一位,这样空间就是线性的了。
码码码。。。
我信仰什么,我便实现哪种方法。
[UOJ176]新年的繁荣
巧妙的生成树题目。
首先对于相同的权值可以看成一个点。
然后考虑 kruskal \text{kruskal} kruskal算法。从大到小枚举边权 v a l = ( 0110...0 ) 2 val=(0110...0)_2 val=(0110...0)2,注意到能连的边不会超过 m m m条,那么我们对于每个 0 0 0的位置(假设第 i i i位)上找到一个点 u u u满足 ( u , v a l ∣ 2 i ) a n d = v a l ∣ 2 i (u,val|2^i)_{and}=val|2^i (u,val∣2i)and=val∣2i,然后把这些点连起来就行了。
怎么理解上述过程呢,注意到对于每个 0 0 0的位置(假设第 i i i位)如果 ( u , 2 i ) a n d ≠ 0 (u,2^i)_{and}\ne 0 (u,2i)and=0 并且 ( v , 2 i ) a n d ≠ 0 (v,2^i)_{and}\ne 0 (v,2i)and=0那么显然 ( u , v ) a n d > v a l (u,v)_{and}>val (u,v)and>val,事实上我们可以把这些位置分成若干组,其中每一组是封闭且联通的(与其他组的与运算都恰好是 v a l val val),那么边权 v a l val val的数目就是组数 − 1 -1 −1。
复杂度 O ( 2 m m ) O(2^mm) O(2mm)。
CF888G Xor-MST
考虑在 trie \text{trie} trie树上自底向上合并的过程。
暴力合并即可。复杂度 O ( n log n log A ) O(n\log n\log A) O(nlognlogA)。
__EOF__

本文链接:https://www.cnblogs.com/cqbzly/p/17530094.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2021-10-20 【题解】[CSP-S2020] 函数调用
2021-10-20 【题解】I love random (计数 dp)