
Trie
Lynstery
一只蒟蒻
展开
-
[Trie树] BZOJ3689: 异或之
题意给定n个非负整数A[1], A[2], ……, A[n]。 对于每对(i, j)满足1 <= i < j <= n,得到一个新的数A[i] xor A[j],这样共有n*(n-1)/2个新的数。求这些数(不包含A[i])中前k小的数。 n<=100000题解有关Trie与二进制的一些运用之前完全不会,现在补一下。 我们可以把所以数字从高位开始插到Trie里,根据每个节点维护的size, 就原创 2017-07-13 17:03:12 · 518 阅读 · 3 评论 -
[可持久化Trie] BZOJ3261: 最大异或和
题意给定一个非负整数序列 {a},初始长度为 N。 有 M个操作,有以下两种操作类型: 1 、A x:添加操作,表示在序列末尾添加一个数 x,序列的长度 N+1。 2 、Q l r x:询问操作,你需要找到一个位置 p,满足 l<=p<=r,使得: a[p] xor a[p+1] xor … xor a[N] xor x 最大,输出最大是多少。 n<=300000题解用容斥转换一下,设原创 2017-07-13 21:51:16 · 676 阅读 · 0 评论 -
[Trie] BZOJ4896: [Thu Summer Camp2016]补退选
题意X是T大的一名老师,每年他都要教授许多学生基础的C++知识。在T大,每个学生在每学期的开学前都需要选课,每次选课一共分为三个阶段:预选,正选,补退选;其中”补退选”阶段最忙碌。在补退选阶段,学生即可以选课,也可以退课。 对于X老师来说,在补退选阶段可能发生以下两种事件: 1:一个姓名为S的学生选了他的课(姓名S将出现在X的已选课学生名单中) 2:一个姓名为S的学生退了他的课(姓名S将从X的原创 2017-06-13 18:54:23 · 393 阅读 · 0 评论 -
[贪心+Trie] Codeforces #566A. Matching Names
首先考虑直觉的贪心,每次找 LCPLCP 尽量长的配对。是否正确呢? 考虑 aa 和 bb 的 LCPLCP 较长,cc 和 dd 较短,如果我们互换组合,一定不会使答案增大,所以大概可以感受到贪心是对的。 接下来就是实现的问题了。容易想到 TrieTrie。我们可以从叶往根合并,中途进行匹配。#include<cstdio>#include<iostream>#include<algori原创 2017-10-19 14:57:35 · 455 阅读 · 0 评论