随笔分类 -  数据结构—Trie树

摘要:题目大意:一棵树,边有权值。现在定义路径的值为路径中边的权值的异或值,求异或值最大的路径。 题解: 从a到b路径的异或值=a到根结点的异或值^b到根结点的异或值。 这样求出每个点到根结点的异或值,然后从n个数中选出异或值最大的数就可以。 把n个数插入Trie树中做。 #include<iostrea 阅读全文
posted @ 2021-05-20 19:07 ANhour 阅读(62) 评论(0) 推荐(0)
摘要:题目大意:从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]); } } 考虑用数据结构优化,对于每个 阅读全文
posted @ 2021-05-20 19:00 ANhour 阅读(76) 评论(0) 推荐(0)
摘要:题目大意:给定n个字符串,然后给出m次询问,问n个字符串中有多少串是当前串的前缀? 题解:Trie树模板题 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; c 阅读全文
posted @ 2021-05-20 18:36 ANhour 阅读(51) 评论(0) 推荐(0)
摘要:传送门 题目大意:求最短唯一前缀 题解:Trie树 把单词一个个插入,每个字母节点v[]++;然后输出时输出到v[]为1的点, v[]=1说明只有这个单词经过。 代码 : 阅读全文
posted @ 2019-12-08 13:17 ANhour 阅读(197) 评论(0) 推荐(0)
摘要:题目大意:n个字符串,m个操作,可以插入字符串,也可以询问某T个字符串的最长后缀 题解:Trie+lca Trie树的插入与查询操作。把字符串反转就相当于求公共前缀。 lca的深度就是公共前缀的长度。 代码: //biology include<iostream> #include<cstring> 阅读全文
posted @ 2017-10-19 19:34 ANhour 阅读(174) 评论(0) 推荐(0)
摘要:沙茶 题目大意:m个询问,某个子串是否出现在n个字符串中,YES/NO,如果重复询问就REPEAT 题解:Trie树询问 代码: //p2580 #include<iostream> #include<cstdio> #include<cstring> #define maxn 500009 usi 阅读全文
posted @ 2017-10-19 19:30 ANhour 阅读(232) 评论(0) 推荐(0)
摘要:沙茶 题目大意:求某一个字符串前缀有没有在n个字符串前缀里出现过 题解:Trie树 查询前缀有没有出现 代码: //codevs4189 #include<iostream> #include<cstdio> #include<cstring> #define maxn 2000008 using 阅读全文
posted @ 2017-10-19 19:23 ANhour 阅读(185) 评论(0) 推荐(0)