![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字典树
、
。十二。
这个作者很懒,什么都没留下…
展开
-
【Ybtoj】【NOIP2021 模拟赛 B 组 Day7】A. DNA 序列【字典树】
解题思路Trie树存一下子串就行了,一开始用map被卡了两个点代码#include<bits/stdc++.h>using namespace std;string s,ss;int l,k,tot,ans;int tree[1000010][11],e[1000010];void insert(string s){ int p=0; for(int i=0;i<k;i++) { int c=s[i]-'A'; if(!tree[p][c])tr...原创 2021-10-30 14:28:47 · 128 阅读 · 0 评论 -
【Ybtoj 第9章例1】前缀统计【Trie树】
解题思路知识点:字典树(嗯嗯,我就是来安利博客的 ^ _^ )学会字典树的基本操作后,回来看看这道题,啊,模板题。。。先把NNN个字符串存入字典树,令v[p]v[p]v[p]表示以字典树上节点p为结尾的字符串的个数。计算答案:我们遍历字符串S,答案为∑xϵp[S]v[p]\sum _{x\epsilon p[S]} v[p]∑xϵp[S]v[p](p[s]p[s]p[s]表示S在字典树上遍历过的节点编号集合)代码#include<iostream>#includ...原创 2021-03-18 17:16:14 · 122 阅读 · 0 评论 -
【Ybtoj 第9章例4】阅读理解【Trie树】
解题思路这道题挺板子的了。。把所有的单词都存入TrieTrieTrie,考虑在TrieTrieTrie上的结点上再存一个信息lyx[p].v[l]lyx[p].v[l]lyx[p].v[l],表示存在或不存在一个单词属于第lll篇文章且单词结尾的TrieTrieTrie结点编号为uuu。对于MMM个询问,只要查询当前询问单词在TrieTrieTrie树上的对应结点uuu有哪些ppp满足lyx[p].v[l]=1lyx[p].v[l]=1lyx[p].v[l]=1 (1<=i<=...原创 2021-03-20 11:00:25 · 124 阅读 · 0 评论 -
【Ybtoj 第9章例3】最长异或路径【Trie树】
解题思路考虑如何求一段路径的异或,我们知道,两个相同的数异或之后的值为0。设s[i]s[i]s[i]表示根节点到点iii的异或值,则点lll到点rrr之间路径的异或值为 sls_lsl xorxorxor srs_rsr,故,我们可以先预处理出s数组,答案变为maxmaxmax sis_isi xorxorxor sjs_jsj (1<=i<j<=n)(1<=i<j<=n)(1<=i<j<=n),这个问题等同于上一题——最大异或对...原创 2021-03-20 08:29:30 · 159 阅读 · 0 评论 -
【Ybtoj 第9章例2】最大异或对【Trie树】
解题思路考虑到异或的性质:两个二进制数出现不同的数位越靠前,异或之后的数就越大。我们考虑用TrieTrieTrie数解决这个问题,我们先把n个二进制数看作字符串存入TrieTrieTrie树。考虑选一个数a,在n个数中找到一个b使得两者异或值越大。考虑从高位到低位判断。若aaa的第iii位为1,p1,p1,p的000指针存在,则沿着ppp的000指针走下去,若不存在,则沿着p的1指针往下走。若aaa的第iii位为000则同理。代码#include<iostream>#...原创 2021-03-19 20:49:15 · 128 阅读 · 0 评论