看到后缀,就想到把所有串反过来插入trie中 建好trie之后dfs,答案其实就是当前结点的子树中的第k大 按dfs的顺序给节点编号,把问题转化为求区间第k大 那么就用可持久化线段树就好了 ...
分类:
其他好文 时间:
2017-08-07 16:37:55
阅读次数:
146
解题关键:离线求区间第k小,主席树的经典裸题; 对主席树的理解:主席树维护的是一段序列中某个数字出现的次数,所以需要预先离散化,最好使用vector的erase和unique函数,很方便;如果求整段序列的第k小,我们会想到离散化二分和线段树的做法, 而主席树只是保存了序列的前缀和,排序之后,对序列的 ...
分类:
其他好文 时间:
2017-08-06 23:14:10
阅读次数:
376
对于常见的可持久化并查集, 我们可以通过 按秩合并 + 可持久化数组 . 但是, 此半可持久化并查集, 非彼可持久化并查集. 我们不用支持时间旅行, 即不用支持回到过去的某个版本, 而只用储存历史信息. 举个例子来说吧. n 个点, 支持两种操作: ① 将某两个点之间连边; ② 查询在前 t 次操作 ...
分类:
其他好文 时间:
2017-08-06 20:42:15
阅读次数:
152
描述 给一个空数列,有M次操作,每次操作是以下三种之一: (1)在数列后加一个数 (2)求数列中某位置的值 (3)撤销掉最后进行的若干次操作(1和3) 输入 第一行一个正整数M。 接下来M行,每行开头是一个字符,若该字符为'A',则表示一个加数操作,接下来一个整数x,表示在数列后加一个整数x;若该字 ...
分类:
其他好文 时间:
2017-08-06 14:59:19
阅读次数:
138
不支持时间旅行的可持久化并查集 给定 n 个点, 以及 m 次操作, 操作有两种: ① 将点 x 与点 y 进行连边; ② 询问在前 t 次操作操作中, x 与 y 是否连通. n <= 100000, 强制在线. 核心模型 n 个点, m 条带权边的无向图. 多次询问点 x 和点 y 在边权不超过 ...
分类:
其他好文 时间:
2017-08-06 12:40:24
阅读次数:
166
板子题,只是记得负数加fix最方便 #include <cstdio> const int A=19,N=100010; namespace FIFO { char ch,B[1<<20],*S=B,*T=B; #define getc() (S==T&&(T=(S=B)+fread(B,1,1<< ...
分类:
其他好文 时间:
2017-08-05 09:55:56
阅读次数:
199
这一次,我们来了解普通Trie树的变种:0-1Trie以及在其基础上产生的可持久化Trie(其实,普通的Trie也可以可持久化,只是不太常见) 先简单介绍一下0-1Trie:一个0-1Trie节点只有两个子节点,分别代表0和1;从根节点开始,第一层代表限制的最高位,依次往下直到最底层,代表二进制第0 ...
分类:
其他好文 时间:
2017-08-03 22:04:11
阅读次数:
163
一:Redis是什么? Redis全称:REmote DIctionary Server(Redis) 。Redis是一个由Salvatore Sanfilippo写的key-value存储系统,ANSI C语言编写; 特点:开源免费、单线程、大并发、遵守BSD协议、支持网络、可基于内存亦可持久化、 ...
分类:
其他好文 时间:
2017-08-02 23:24:01
阅读次数:
163
最近跑来打数据结构,于是我决定搞一发可持久化,然后发现……一发不可收啊…… 对于可持久化数据结构,其最大的特征是“历史版本查询”,即可以回到某一次修改之前的状态,并继续操作;而这种“历史版本查询”会衍生出其他一些强大的操作。 今天,我们主要讲解可持久化线段树。其实,它的另外一个名字“主席树”似乎更加 ...
分类:
其他好文 时间:
2017-08-02 21:03:44
阅读次数:
190