Trie
BZOJ 3689 异或之
大意:
给定 n 个数,求这
解:
将加法换成异或就变成了一个用堆合并多个有序表的经典问题,对于加法我们按大小排序就能得到有序表,而由于这里是异或,我们需要高效地维护有序表,即对于一个数
我们将所有数按二进制建成
BZOJ 3439 Kpm的MC密码
大意:
给定 n 个字符串,对于每个字符串求以这个字符串为后缀的字符串中第
解:
反转建出字典树,相当于询问这个点的子树里结束结点编号的第 k 大,子树查询利用
BZOJ 3217 ALOEXT
大意:
维护一个序列,支持以下操作:
2. 删除某个位置上的数
3. 修改某个位置上的数
4. 求某段区间中的次大值与区间中另一个数的异或值的最大值
解:
假如是询问整个序列,我们可以用字典树来做,由于每次询问区间不一样,我们用平衡树套字典树维护区间信息,这里用替罪羊来套字典树
AC 自动机/ KMP
BZOJ 3670 NOI2014 动物园
大意:
给一个字符串 S(|S|<=106) ,求所有前缀 Si 的 numi 之积, numi 为 Si的前缀S′的数量,使得该前缀S′与