
Trie字典树
文章平均质量分 52
ssl_fuyang
ヾ(◍°∇°◍)ノ゙
展开
-
最大异或和【可持久化Trie】
可持久化Trie原创 2022-09-01 21:54:04 · 208 阅读 · 0 评论 -
[CF888G]Xor-MST【Trie】【分治】【启发式合并】
>Link luogu CF888G luogu T207971 >Description 有一张 nnn 个点的无向完全图。其中点 iii 的点权为 aia_iai。 两个点 u,vu,vu,v 之间的边的边权为 aua_uau。 求出这张图的最小生成树。 >解题思路 看到求类似异或的最小值,就会想到用Trie 求最小生成树,要找当前最小的两两异或值 发现在Trie树上,如果两两叶子节点的LCA深度越深,这两个点的异或值就越小,那这两个点就越优先连起来 所以我们在一个节点,找以这原创 2021-11-10 07:19:57 · 124 阅读 · 0 评论 -
阅读理解【Trie】
>Link luogu P3879 ybtoj阅读理解 >Description 英语老师留了 N 篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过。 1≤M≤104,1≤N≤1031≤M≤10^4,1≤N≤10^31≤M≤104,1≤N≤103 >解题思路 先全部输入完 然后对每篇短文建一棵trie,建完第 i 棵trie以后,对m个单词进行匹配,然后累计答案 (这样可以省空间) 时间复杂度O(nm)O(nm)原创 2021-10-25 11:16:41 · 118 阅读 · 0 评论 -
最长异或路径【Trie】
>Link ybtoj最长异或路径 >Description 给定一棵 N 个点的带权树,结点下标从 1 到 N。求树上最长的异或路径。 异或路径指的是指两个结点之间唯一路径上的所有边权的异或。 1≤n≤105,0≤w<2311≤n≤10^5,0≤w<2^{31}1≤n≤105,0≤w<231 >解题思路 我们可以预处理根节点到第iii个节点的路径上的异或和 aia_iai 那根据异或的性质,uuu到vvv的异或路径就为 au⊕ava_u⊕a_vau⊕av 那这原创 2021-10-22 16:27:59 · 385 阅读 · 0 评论 -
最大异或对【Trie】
>Link ybtoj最大异或对 >解题思路 因为是 异或,所以显然我们要先把数都拆成二进制,放进字典树中 根据题目大意:找出两两异或出的最大值,所以我们要考虑数尽可能大,显然我们要优先考虑高位数,也就是从高位往低位的顺序构建字典树 然后我们枚举每一个数,“走反路”就行了(异或:相同为0,不同为1。所以假设当前位为1,我们就选择0,如果0这条路不存在,我们就只好选择相同的数1) >代码 #include <iostream> #include <cstdio>原创 2021-07-01 21:29:56 · 208 阅读 · 0 评论 -
前缀统计【Trie】
>Link ybtoj前缀统计 >解题思路 一道非常裸的字典树模板题(要注意一些细节) >代码 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define N 1000010 using namespace std; int n, m, t[N][30], end[N * 30], cnt, p, ans; string s;原创 2021-07-01 17:38:16 · 103 阅读 · 0 评论 -
捡金子【Trie】【贪心】
>Description 从前有一个迷宫,迷宫的外形就像一棵带根树,每个结点(除了叶子结点外)恰好有 K 个儿子。 一开始你在根结点,根结点的 K 个儿子分别标记为‘A’, ‘B’, ‘C’….,而结点‘A’的 K 个儿子结点分别标记为‘AA’,‘AB’,‘AC’……,依此类推。这棵树一共有 L 层。 现在你事先知道 M 个结点中有金子,并且你可以派出 N 个机器人去收集金子。首先你可以分别指定每一个机器人的目标结点,于是这些机器人就会收集从根结点到其目标结点这条路径上(包括目标结点)所有的金子,但是原创 2020-08-28 11:32:06 · 153 阅读 · 0 评论 -
SP4033 PHONELST - Phone List【模板】【Trie】
>Description 给定n个长度不超过10的数字串,问其中是否存在两个数字串S,T,使得S是T的前缀。有多组数据,数据组数不超过40。n<=10000。 >Input 第一行,一个整数T,表示数据组数。 对于每组数据,第一行一个数n,接下去n行,输入n个数字串。 >Output 对于每组数据,若存在两个数字串S,T,使得S是T的前缀,则输出“NO”,否则输出“YES”。 >Sample Input 2 3 911 97625999 91125426 5 113 123原创 2020-08-27 20:49:15 · 309 阅读 · 0 评论 -
luogu2922秘密消息【字典树】
>Description 奶牛共有M(1≤M≤50000)条二进制的消息,知道了第i条二进制信息的前bi(l《bi≤10000)位。 同时奶牛使用N(1≤N≤50000)条密码。但是我们仅仅了解第J条密码的前cj(1≤cj≤10000)位。 对于每条密码J,都可能有信息能够和它匹配。 匹配的标准是:第J条密码是第i条信息的前缀,或第i条信息是第J条密码的前缀。 答案输出每条密码能够与信息匹配...原创 2019-08-16 07:59:40 · 137 阅读 · 0 评论