字典树
字典树
JA_yichao
这个作者很懒,什么都没留下…
展开
-
YbtOJ 字典树课堂过关 例4 阅读理解【trie树】
思路板子题,用一个数组记录一下生词是在第几个短文里出现的就好了。代码#include<algorithm>#include<cstring>#include<iostream>#include<cstdio>using namespace std;int trie[500010][30],n,m,tot=1,q;int zc[510000],c;string s;struct node{ int w[1010];}v[51000..原创 2021-04-01 16:49:08 · 146 阅读 · 0 评论 -
YbtOJ 字典树课堂过关 例3 最长异或路径【trie树】【预处理】
思路这道题首先思考如何求树上的异或路径。暴力会超时 O(n2)O(n^2)O(n2) ,所以想想怎么优化。设一个 a[i]a[i]a[i] 表示点 iii 到根节点的异或路径,那么我们可以从根节点开始暴力搜树,在搜的过程中不断求异或,然后就可以 O(n)O(n)O(n) 预处理出 a[i]a[i]a[i]。之后问题就转化成了求 s[i]s[i]s[i] 异或 s[j]s[j]s[j] 的最大值,和 例2最大异或和 一样。代码#include<iostream>#include&..原创 2021-03-27 08:24:57 · 109 阅读 · 0 评论 -
YbtOJ 字典树课堂过关 例2 最大异或和【trie树】【贪心】
思路首先我们知道异或的性质是不同为1,相同为0;并且在越靠前的位置上出现不同的数异或结果就越大。所以我们可以把给的数的二进制数存进字典树中(要反着存因为要从前往后找),然后贪心。遇到不同的位置就顺着不同的位置找 ,没有不同的位置就沿着相同的位置找,累加答案然后max就好了。代码#include<iostream>#include<cstring>#include<cstdio>using namespace std;int n,a[3000010],..原创 2021-03-26 21:24:34 · 181 阅读 · 0 评论 -
YbtOJ 字典树课堂过关 例1 前缀统计【trie树】
不会字典树就截这里思路这道题首先把所有S存进trie树中,然后用一个 v[i]v[i]v[i] 来表示以编号为i的节点为结尾的字符串的的个数,这样就能在统计每个输入的前缀(遍历trie树)时直接累加v数组了。答案为:∑X∈Tv[x[last]]\sum_{X\in T} v[x[last]]∑X∈Tv[x[last]].代码#include<iostream>#include<cstring> #include<cstdio>using names..原创 2021-03-20 15:34:50 · 152 阅读 · 0 评论