题目简述 维护一个长度为N的数组,支持如下几种操作: 1. 在某个历史版本上修改某一个位置上的值 2. 访问某个历史版本上的某一位置的值 此外,每进行一次操作(对于操作2,即为生成一个完全一样的版本,不作任何改动),就会生成一个新的版本。版本编号即为当前操作的编号(从1开始编号,版本0表示初始状态数 ...
分类:
编程语言 时间:
2018-02-20 23:56:41
阅读次数:
297
[BZOJ 3673]可持久化并查集by zky <题意概括> 一道可持久化并查集的裸题 <做法> 类似于普通并查集 只不过普通并查集用普通数组实现 而可持久化并查集用可持久化数组实现 <Code> #include<cstdio> #define Fast register inline char ...
分类:
其他好文 时间:
2018-01-07 17:35:56
阅读次数:
164
#include<cstdio> #define MXN 1000000+1 #define mid(a,b) ((a+b)>>1) int read(){ int x=0,w=1; char c=getchar(); while(c<'0'||c>'9'){ if(c=='-') w=-1; c= ...
分类:
编程语言 时间:
2017-12-02 17:48:47
阅读次数:
172
#include<cstdio> #define MXN 1000000+1 #define mid(a,b) ((a+b)>>1) int read(){ int x=0,w=1; char c=getchar(); while(c<'0'||c>'9'){ if(c=='-') w=-1; c= ...
分类:
编程语言 时间:
2017-12-02 17:41:59
阅读次数:
265
题目背景 UPDATE : 最后一个点时间空间已经放大 标题即题意 有了可持久化数组,便可以实现很多衍生的可持久化功能(例如:可持久化并查集) 题目描述 如题,你需要维护这样的一个长度为 NN 的数组,支持如下几种操作 在某个历史版本上修改某一个位置上的值 此外,每进行一次操作(对于操作2,即为生成 ...
分类:
编程语言 时间:
2017-11-26 12:54:49
阅读次数:
240
P3919 【模板】可持久化数组(可持久化线段树/平衡树) 题目背景 UPDATE : 最后一个点时间空间已经放大 标题即题意 有了可持久化数组,便可以实现很多衍生的可持久化功能(例如:可持久化并查集) 题目描述 如题,你需要维护这样的一个长度为 NN 的数组,支持如下几种操作 在某个历史版本上修改 ...
分类:
其他好文 时间:
2017-11-18 17:34:35
阅读次数:
219
题目背景 UPDATE : 最后一个点时间空间已经放大 标题即题意 有了可持久化数组,便可以实现很多衍生的可持久化功能(例如:可持久化并查集) 题目描述 如题,你需要维护这样的一个长度为 N N N 的数组,支持如下几种操作 在某个历史版本上修改某一个位置上的值 访问某个历史版本上的某一位置的值 此 ...
分类:
编程语言 时间:
2017-10-05 14:13:59
阅读次数:
202
Description 如题,你需要维护这样的一个长度为 N 的数组,支持如下几种操作 在某个历史版本上修改某一个位置上的值 此外,每进行一次操作(对于操作2,即为生成一个完全一样的版本,不作任何改动),就会生成一个新的版本。版本编号即为当前操作的编号(从1开始编号,版本0表示初始状态数组) Inp ...
分类:
编程语言 时间:
2017-10-03 13:32:23
阅读次数:
240
可持久化并查集我觉得就是可持久化数组的一种应用。可持久化数组,顾名思义,就是有历史版本的数组,那么如果我们暴力修改储存的话,修改O(n)查询O(1),空间O(n*m),这样肯定不可行,那么我们发现主席树有这样的功能,他可以快速复制,修改O(log),查询O(log),空间(m*log),是一个可行的 ...
分类:
其他好文 时间:
2017-08-09 22:19:07
阅读次数:
199
对于常见的可持久化并查集, 我们可以通过 按秩合并 + 可持久化数组 . 但是, 此半可持久化并查集, 非彼可持久化并查集. 我们不用支持时间旅行, 即不用支持回到过去的某个版本, 而只用储存历史信息. 举个例子来说吧. n 个点, 支持两种操作: ① 将某两个点之间连边; ② 查询在前 t 次操作 ...
分类:
其他好文 时间:
2017-08-06 20:42:15
阅读次数:
152