Trie树
编号21212
SSL是母校,现前往新地图开拓中。
漫游于平行线间的灰鲤,于此处激起黑色孤独的水花。
展开
-
【Trie树】Ybt_最长异或路径
题目大意 给你一颗树。求树上最长的异或路径。 异或路径指的是指两个结点之间唯一路径上的所有边权的异或。 解 可以发现,若一个点异或两次,它的贡献值为0,约等于没有经过这个点。 于是我们可以预处理出根节点到其它点的异或 xorr 。 点 x 到点 y 间的异或路径就为 xorr[x] xor xorr[y] 。 那么问题就变成了: 再xorr数组里求两个数异或和最大。 就和这题一样了。 从高位往低位处理,便于使异或结果最大。 构建Trie树。 从高位往地位处理,每次优先选与当前位不同的路径(这样和最大),原创 2021-04-17 08:09:13 · 176 阅读 · 0 评论 -
【Trie树】Ybt_最大异或对
题目大意 给你n个整数,要你任选两个,使它们的异或结果最大。输出这个结果。 解 从高位往低位处理,便于使异或结果最大。 构建Trie树。 从高位往地位处理,每次优先选与当前位不同的路径(这样和最大),若没有,就选择当前位相同的走下去。 代码 (易懂版本) #include <cstdio> #include <iostream> #include <cmath> using namespace std; int n, m, len, w, f[10000009][3]原创 2021-04-16 21:38:44 · 90 阅读 · 0 评论 -
【Trie树】Ybt_前缀统计
题目大意 给n个字符串。 再给m个字符串,要你求前n个字符串有多少个是当前字符串的前缀。 解 Trie树。详见代码。 代码 #include <cstdio> #include <cstring> #include <string> #include <iostream> using namespace std; int n, m, len, w, f[1000009][30], End[1000009], ans, tot; char ch; strin原创 2021-04-16 20:41:15 · 79 阅读 · 0 评论