![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
tire树
AC__dream
道阻且长,行则将至;行而不辍,未来可期!
展开
-
(2021第一场网络赛)G Longest Prefix Matching(tire树)
题目链接:题目详情 (pintia.cn)题目先给定一些字符串及最小匹配长度以及其对应的值,再给我们一些询问,每个询问对应着一个字符串,问这个字符串与之前给定的字符串是否能匹配成功,只需要输出能匹配成功的且匹配长度最大的字符串的对应值即可,听起来有些绕,可以直接读英文题目。这道题目显然是用01字典树,我们可以先把给定的字符串加入字典树,在对应所需匹配长度上标记字符串的编号,在查询时我们就可以用待查询字符串去与字典树中的字符串去匹配,返回匹配的长度最大的字符串的编号即可。这道题目的输入比较难受,建议用原创 2021-09-21 22:29:46 · 219 阅读 · 0 评论 -
(codeforce1285D)Dr. Evil Underscores(tire树+贪心)
题目链接:Problem - 1285D - Codeforces题目大意:就是说给你一些数x1,x2,……xn,让你找到一个数y使得y与x1,x2,……xn中任何一个数的异或值的最大值最小。这道题目呢,我是用dfs做的,容易想到的是我们先要把这些数加入tire树中,但这与之前那个最大异或对的题目有很大不同,在那道题目中我们是要用一个确定的数去寻找最大异或值,而这道题目没有给出具体的值。但是我们可以利用贪心的思想来构造出一个数使得他满足题意,我们还是按照构建tire树的方法来遍历,只是在遍历过程中有原创 2021-08-26 17:13:08 · 227 阅读 · 0 评论 -
(cordforce#367D)Vasiliy‘s Multiset
题目链接:Problem - D - Codeforces简化下题意:有q次操作和一个集合A,开始时集合中只有一个数0,下面有三种类型的操作:1. + x 把x插入集合A2. - x 把x从集合A中删去,保证x已存在于集合A中3. ? x 给一个数x在集合A中找一个y使得x^y最大,并求出这个值 ( 1<=q<=200000 ) ( 1<=x_{i}<=10^9)这就是一个模板题目,在之前我只说过怎么往tire树中添加东西,并没有说过怎么从tire树中删除东西原创 2021-08-23 21:12:01 · 174 阅读 · 0 评论 -
(POJ3764)The xor-longest Path(tire树+性质)
题意:In an edge-weighted tree, the xor-length of a pathpis defined as the xor sum of the weights of edges onp:⊕ is the xor operator.We say a path the xor-longest path if it has the largest xor-length. Given an edge-weighted tree with n nodes, can yo...原创 2021-08-23 21:00:25 · 184 阅读 · 0 评论 -
(acwing3485)最大异或和
给定一个非负整数数列a,初始长度为N。请在所有长度不超过M的连续子数组中,找出子数组异或和的最大值。子数组的异或和即为子数组中所有元素按位异或得到的结果。注意:子数组可以为空。输入格式第一行包含两个整数 N,M。第二行包含N个整数,其中第i个为ai。输出格式输出可以得到的子数组异或和的最大值。数据范围对于20% 的数据,1≤M≤N≤100对于50%50%的数据,1≤M≤N≤1000对于100%100%的数据,1≤M≤N≤10^5,0≤a...原创 2021-08-22 09:01:34 · 321 阅读 · 0 评论 -
(acwing143)最大异或对
在给定的N个整数A1,A2……AN中选出两个进行 xor(异或)运算,得到的结果最大是多少?输入格式第一行输入一个整数N。第二行输入N个整数 A1~AN。输出格式输出一个整数表示答案。数据范围1≤N≤10^5,0≤Ai<23^1输入样例:31 2 3输出样例:3对于这道题目,我们可以把这些树当成二进制串用tire树存起来,我们如果要查询tire树中的数与x异或后的最大值我们应该怎么办呢?设想一下,x为27,二进制表示为1 1 0 1...原创 2021-08-21 20:33:52 · 221 阅读 · 0 评论 -
tire树
tire树是用来存储字符串的一个工具,举个形象点的例子,相信大家都用过英语词典,假如我们要查单词abandoned,我们肯定会先在字典中找a,接着在a的那一部分后面找b,就这样依次找下去,tire树就是这样的一种结构,假如我们要存apple,bomb,cat,yes,coach这几个单词,那么这棵树的结构就是下面这个样子:tire树不仅可以用来存储字符串,还可以存数,直接把数换成二进制01串即可储存,下面给出一道例题,大家结合代码好好理解一下吧维护一个字符串集合,支持两种操作:I x向集合.原创 2021-08-21 20:23:41 · 811 阅读 · 2 评论