trie
文章平均质量分 54
字典树
李峻枫
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 12 E. Beautiful Subarrays
题目大意 给出一个长度为nnn的数组a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1,a2,⋯,an。 求有多少个区间[l,r][l,r][l,r],满足al⨁al+1⨁⋯⨁ar≥ka_l \bigoplus a_{l+1}\bigoplus\cdots\bigoplus a_r\ge kal⨁al+1⨁⋯⨁ar≥k 时间限制 3s 数据范围 n≤106n\le 10^6n≤106 ai≤109a_i\le10^9ai≤109 k≤109k\le 10^9k≤109 题解 对于异原创 2021-07-25 10:03:34 · 97 阅读 · 0 评论 -
【JSOI2015】字符串树
题解由于字符串长度不超过10,所以trie的深度就不超过10。 对于一条边u,v,s 那么我们将v从u上继承信息,然后对于v的trie树,插入s这个串,将路径上每一个点的权值都+1 不过我们不可能对每一个点都开一个trie, 我们会发现每一次加入一条边,只有字符串长度个点发生改变, 所以,就用可持久化trie。code#include<iostream> #include<cmath> #原创 2017-02-11 21:16:14 · 364 阅读 · 0 评论 -
JZOJ5397. 【NOIP2017提高A组模拟10.6】Biology
题解如果我们将全部字符串倒过来, 那么后缀就变成了前缀。如果用这些倒过来的字符串的建一棵tire, 最长公共前缀就是每一个字符串的最后一个点的lca的深度。查询就用倍增+lca实现, 对应每加入一个新的节点,就处理一下它的父亲。code#include<queue> #include<cstdio> #include<iostream> #include<algorithm> #include原创 2017-10-06 20:51:37 · 280 阅读 · 0 评论 -
JZOJ5483. 【清华集训2017模拟11.26】简单路径
Description给定一棵带边权的树,选择两条没有公共边的简单路径(长度可以为0),使得所有在任意一条路径上的边的异或和尽量大。Input第一行一个数n表示点数,点的编号是0到n-1。 接下来一行(n-1)个数,第i个数表示编号为i的点的父亲编号,保证这个编号小于i。 接下来一行(n-1)个数,第i个数表示编号为i的点到它父亲的边的边权。Output输出一行一个数表示答案。Sample In原创 2017-11-30 16:14:17 · 258 阅读 · 0 评论 -
JZOJ5795. 2018.08.10【2018提高组】模拟A组&省选 词典
题目 题解 其实这题也非常简单, 想到一种非常非常暴力的做法, 用所有的t串,建出一棵tire, 然后每个节就将它子树里面所有的结尾作为1,然后求出全0串。 其实正解的思路差不多, 每个节点维护一个lst和v, 顺序将t插入, 假设当前titit_i遍历到点x, 那么就vx=max(vx,i−lstx−1),lstx=ivx=max(vx,i−lstx−1),lstx=...原创 2018-08-10 21:46:16 · 169 阅读 · 0 评论 -
JZOJ5822. 【NOIP提高A组模拟2018.8.16】 量子纠缠
题目大意 给定一个集合,支持加入,纠缠操作,并查询某个字符串是否在集合里面。 题解 先不看纠缠操作,很显然一棵trie就可以解决。 考虑纠缠操作,其实就是将trie树上面的某些节点进行合并, 用并查集来合并。 设需要纠缠的两个串a,b在tire上的最后一个节点分别为x,y, 设过程entanglement(x,y)表示将x跟y纠缠并把y的信息合并到x上面, 从0到9枚举儿子...原创 2018-08-19 20:43:53 · 287 阅读 · 0 评论