字典树
DeadWooder
这个作者很懒,什么都没留下…
展开
-
#10051. 「一本通 2.3 例 3」Nikitosh 和异或
#10051. 「一本通 2.3 例 3」Nikitosh 和异或 大意:给你一串数字,求最大的 R1 < L2. 思路:首先想到可以求异或前缀和,这样就可以 O(1) 的求出区间的异或值了。 设 L[i] 为考虑前 i 位最大的区间异或值, R[i] 为考虑 i 位以后的最大区间异或值。那么遍历所有 L[i]+R[i+1] 最大值就是答案。L[i],R[i...原创 2019-05-02 09:48:53 · 193 阅读 · 0 评论 -
#10052. 「一本通 2.3 练习 1」Immediate Decodability
#10052. 「一本通 2.3 练习 1」Immediate Decodability 大意:给一些数字串,问是否有数字串是另一数字串的前缀。 字典树板子 #include <bits/stdc++.h> using namespace std; const int maxn = 500; int tre[maxn][11],sz; struct node{ cha...原创 2019-05-02 10:04:34 · 214 阅读 · 0 评论 -
#10056. 「一本通 2.3 练习 5」The XOR-longest Path
#10056. 「一本通 2.3 练习 5」The XOR-longest Path 大意:给你一个 n 各节点的带边权树,问你最大的路径异或值。 思路:dfs一遍求根节点到个点的路径异或值 T[i],则 a->b的路径异或值为T[a]^T[b]。然后异或字典树。 #include <bits/stdc++.h> using namespace std; const in...原创 2019-05-03 12:25:24 · 219 阅读 · 0 评论 -
#10049. 「一本通 2.3 例 1」Phone List
#10049. 「一本通 2.3 例 1」Phone List 大意:给 n 个数字串,问是否有 s 串是 t 串的前缀 思路:把串有长到短排序,建字典树,遇到结束点为已经见过的输出。 #include <bits/stdc++.h> using namespace std; const int maxn = 1e5+500; int tre[maxn<<2][11...原创 2019-05-01 09:47:32 · 206 阅读 · 0 评论 -
#10050. 「一本通 2.3 例 2」The XOR Largest Pair
#10050. 「一本通 2.3 例 2」The XOR Largest Pair 大意:给 n 个数,问任取两个数最大的异或和是多少。 思路:二进制字典树,注意要从高位开始建树,不然无法贪心。 #include <bits/stdc++.h> using namespace std; const int maxn = 1e5+500; int tre[maxn*32][2],...原创 2019-05-01 10:34:27 · 256 阅读 · 0 评论