传送门 默认大家都学过trie与AC自动机。 先求出fail,对于每个节点维护一个sum,sum[u]待表从根到u所形成的字符串能拿到几分。显然sum[u]=sum[fail] + (u是几个字符串的结尾)。 设dp[i][j]代表长度为i到trie树上的j号节点所得的最大分数,显然有dp[i+1] ...
分类:
其他好文 时间:
2020-02-20 23:45:24
阅读次数:
84
知识点:字典树。 题目链接: https://ac.nowcoder.com/acm/contest/4370/B 题意:t组数据,n个数字,问是否满足不存在任何一个数字是其他数字的前缀。 题解:套用字典树一个一个插入字符串。若在插入过程中遇到如下两种情况,则存在其中一个是另一个的前缀。 1.遍历完 ...
分类:
其他好文 时间:
2020-02-20 13:18:03
阅读次数:
80
传送门 我们正常的建好Trie后求一遍fail。之后对于每一个节点,从它的fail连向它一条单项边。然后从根节点开始dfs。 记sum[i]代表从根到i号节点所代表的的字符串出现的次数,即该点的权值。 设当前的节点为x,他有一个孩子y,则使sum[x] += sum[y]。 记得记录一下每个字符串结 ...
分类:
其他好文 时间:
2020-02-19 21:03:48
阅读次数:
58
字典树 Description 遇到单词不认识怎么办? 查字典啊,已知字典中有n个单词,假设单词都是由小写字母组成。现有m个不认识的单词,询问这m个单词是否出现在字典中。 Input 含有多组测试用例。 第一行输入n,m (n>=0&&n<=100000&&m>=0&&m<=100000)分别是字典 ...
分类:
其他好文 时间:
2020-02-17 19:54:32
阅读次数:
100
Algorithm 基本数据结构: "Trie(字典树)" "贪心" "高精度" "位运算" "C++STL" 数据结构进阶: "线段树" 数论: "康拓展开 & 逆康拓展开" 图论: "图论 二分图" "图论 最短路" "图论 最小生成树" "图论 Tarjan" "图论 树的直径" Contes ...
分类:
其他好文 时间:
2020-02-17 17:46:07
阅读次数:
50
多校联合测试 一场常规省选难度的模拟赛,三题的标签分别是“结论题”,“多项式”,”费用流“。 第一题看似是数位题,但是卡空间,并且删除操作难以用$\mathrm{Trie}$等数据结构维护,让人匪夷所思。 正解是一个结论,值域区间最大的$\mathrm{and}$和必然诞生在前$p$大的数当中,$p ...
分类:
其他好文 时间:
2020-02-16 20:59:00
阅读次数:
117
题目链接:病毒[POI2000] 我们假设已经有一个无限长的串满足要求,那如果我们拿它去匹配会发生什么? 它会一直在Trie树和fail树上转圈,一定经过根节点且不会经过病毒字符串结束的节点。 所以如果我们能找到一个环满足“一定经过根节点且不会经过病毒字符串结束的节点”,那么就可以找到一个无限长的串 ...
分类:
其他好文 时间:
2020-02-14 16:33:36
阅读次数:
66
如图为一颗字典树,该树插入了7个单词,abc,abcd,b,bcd,efg,hij 字典树模板: 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn=2e6+5; // Trie 树上的最大结点数 4 5 int to ...
分类:
其他好文 时间:
2020-02-13 21:19:41
阅读次数:
52