随笔分类 - 数据结构—Trie树
摘要:题目大意:一棵树,边有权值。现在定义路径的值为路径中边的权值的异或值,求异或值最大的路径。 题解: 从a到b路径的异或值=a到根结点的异或值^b到根结点的异或值。 这样求出每个点到根结点的异或值,然后从n个数中选出异或值最大的数就可以。 把n个数插入Trie树中做。 #include<iostrea
阅读全文
摘要:题目大意:从n个数中选出两个数异或,求最大的异或值。 1≤N≤10^50≤Ai<2^ 31 题解: 首先考虑暴力的写法 for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { ans=max(ans,a[i]^a[j]); } } 考虑用数据结构优化,对于每个
阅读全文
摘要:题目大意:给定n个字符串,然后给出m次询问,问n个字符串中有多少串是当前串的前缀? 题解:Trie树模板题 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; c
阅读全文
摘要:传送门 题目大意:求最短唯一前缀 题解:Trie树 把单词一个个插入,每个字母节点v[]++;然后输出时输出到v[]为1的点, v[]=1说明只有这个单词经过。 代码 :
阅读全文
摘要:题目大意:n个字符串,m个操作,可以插入字符串,也可以询问某T个字符串的最长后缀 题解:Trie+lca Trie树的插入与查询操作。把字符串反转就相当于求公共前缀。 lca的深度就是公共前缀的长度。 代码: //biology include<iostream> #include<cstring>
阅读全文
摘要:沙茶 题目大意:m个询问,某个子串是否出现在n个字符串中,YES/NO,如果重复询问就REPEAT 题解:Trie树询问 代码: //p2580 #include<iostream> #include<cstdio> #include<cstring> #define maxn 500009 usi
阅读全文
摘要:沙茶 题目大意:求某一个字符串前缀有没有在n个字符串前缀里出现过 题解:Trie树 查询前缀有没有出现 代码: //codevs4189 #include<iostream> #include<cstdio> #include<cstring> #define maxn 2000008 using
阅读全文

浙公网安备 33010602011771号