![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
可持久化数据结构
文章平均质量分 89
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[主席树] BZOJ 3524 [Poi2014]Couriers BZOJ 2223 [Coci 2009]PATULJCI
裸题#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; } r原创 2016-05-13 16:28:15 · 436 阅读 · 0 评论 -
[A* K短路 || 可持久化堆] POJ 2449 Remmarguts' Date
这就是裸的k短路了 学习一发A*的姿势:http://yzmduncan.iteye.com/blog/1162759这个S==T的坑要注意#include#include#include#include#include#define V G[p].vusing namespace std;inline char nc(){ static char buf[原创 2016-05-02 21:12:45 · 552 阅读 · 0 评论 -
[K短路 可持久化堆 最短路径树] JDFZ 2978 第k短路(强)
链接:https://oj.jdfz.com.cn/oldoj/problem.php?id=2978鼎爷的【课件】堆的可持久化和k短路#include#include#include#include#include#include#define cl(x) memset(x,0,sizeof(x));using namespace std;ty原创 2016-12-21 07:06:27 · 907 阅读 · 0 评论 -
[K短路 可持久化堆] HDU 5960 Subsequence
建图不难 然后直接上K短路 A*被完虐#include#include#include#include#include#include#define cl(x) memset(x,0,sizeof(x));using namespace std;typedef long long ll;inline char nc(){ static char buf[1000原创 2016-12-21 07:09:55 · 1048 阅读 · 0 评论 -
[Notes] 可持久化数据结构学习笔记
可持久化数据结构 就是使数据结构可以返回历史版本一般的实现方法是新建有修改的点 其他点与上一版本共用 这样做到空间复杂度带上一个或两个log主席树(可持久化线段树、函数式线段树)每次新增一条从叶子到根的链 因为有修改学习参考资料:MetalSeed:主席树介绍qian99:主席树学习笔记Seter:1901: Zju2112 Dyna原创 2016-05-15 21:27:05 · 4399 阅读 · 0 评论 -
[可持久化字典树 分块] BZOJ 2741 【FOTILE模拟赛】L
先异或取前缀和最大异或值 可持久化字典树然后么 区间问题 分块用f[i][j] 表示 第i块中的数与i-j块的数的最大异或值 然后边角处理下复杂度一个根号一个log#include#include#include#includeusing namespace std;typedef long long ll; inline char nc(){原创 2016-05-15 12:57:55 · 637 阅读 · 0 评论 -
[可持久化字典树 set] BZOJ 3166 [Heoi2013]Alo
枚举每个点 处理出它能作为次大值的区间然后就是数据结构的问题了“按照权值的倒序,set维护位置,依次插入,则x的可行区间为[x前驱的前驱+1,x后继的后继-1](两半合起来)” ——hzwer#include#include#include#includeusing namespace std; inline char nc(){ static c原创 2016-05-15 12:54:15 · 515 阅读 · 0 评论 -
[主席树套堆 区间修改 标记永久化] BZOJ 3489 A simple rmq problem
“因为是OJ上的题,就简单点好了。” Orz看看贴吧吧:http://tieba.baidu.com/p/2947256742#47989538012l记一下next 从左到右 删了之前的标记 再从这个点到next-1都打标记 然后就可以查询了按一个坐标离线做强制转在线么 用主席树好了 第一次打主席树区间修改 空间两个log 不过这个的前提是标记永久化 不然就是n2了原创 2016-05-13 16:17:40 · 1190 阅读 · 0 评论 -
[主席树 树状数组套权值线段树] BZOJ 1146 [CTSC2008]网络管理Network
CTSC的裸题么先建主席树 然后修改么 可以发现对整棵子树有影响 对每个点记录每个权值的改变量然后用差分的思想 用树状数组区间修改 单点查询A掉后发现不用打主席树 可以最初的权值也可以树状数组上改 结果稍微改下程序 慢了5倍233#include#include#include#define V G[p].vusing namespace std;原创 2016-05-13 21:50:46 · 899 阅读 · 0 评论 -
[主席树 二分答案] BZOJ 2653 middle
题解:http://blog.csdn.net/acm_cxlove/article/details/8566093要求中位数最大,首先二分中位数,然后判断可行不可行。判断X可行不可行,对于区间内的数,凡是>=X的标为1,否则为-1。这样的话,求一次最大区间和如果大于等于0,则说明可行。#include#include#includeu原创 2016-05-13 21:53:27 · 406 阅读 · 0 评论 -
[主席树] BZOJ 3673 可持久化并查集 by zky BZOJ 3674 可持久化并查集加强版
什么时候去用rope水一下贴3674的代码吧 3673没看到没在线了 炸死了#include#include#include#define V G[p].vusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=b原创 2016-05-13 16:34:16 · 538 阅读 · 0 评论 -
[主席树 启发式合并] BZOJ 3123 [Sdoi2013]森林
本来一看LCT 后来看第k大 主席树啦#include#include#include#include#define V G[p].v#define cl(x) memset(x,0,sizeof(x))using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if原创 2016-05-13 16:31:53 · 598 阅读 · 0 评论 -
[可持久化字典树] BZOJ 4546 codechef XRQRS
这就是个大模板题本来后两个操作想再打个主席树后来发现可持久化字典树就是主席树#include#include#includeusing namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(bu原创 2016-05-15 12:59:38 · 993 阅读 · 0 评论 -
[可持久化字典树] BZOJ 3261 最大异或和
表达式形如Xor[p]^Xor[n]*x然后就是个裸的最大异或和了在前面加个0 会好做点#include#include#includeusing namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fr原创 2016-05-15 12:51:16 · 569 阅读 · 0 评论 -
[乱搞 || 可持久化字典树 堆] BZOJ3689 异或之
%%hzwer:http://hzwer.com/3657.html好可怕,暴力大法好什么可持久化字典树,蒟蒻不会#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (原创 2016-03-18 20:02:57 · 698 阅读 · 0 评论 -
[主席树] BZOJ 1803 Spoj1487 Query on a tree III
裸题 dfs序好了#include#include#include#include#define V G[p].vusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,std原创 2016-05-13 16:20:17 · 509 阅读 · 0 评论 -
[主席树] BZOJ 2588 Spoj 10628. Count on a tree
树上路径第k大 裸题#include#include#include#define V G[p].vusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(bu原创 2016-05-13 16:22:14 · 456 阅读 · 0 评论 -
[主席树] BZOJ 3932 [CQOI2015]任务查询系统
裸题#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1原创 2016-05-13 16:26:52 · 375 阅读 · 0 评论 -
[可持久化可并堆 || ST表 点分治] BZOJ 3784 树上的路径
显然是用堆来维护 每弹出一个解 加入其后继 怎么定义后继 经典做法是点分后维护一个类似超级钢琴的东西 首先对这棵树进行点分治,在分治的时候将所有点到根的距离依次放入一 个数组qq中 对于一棵子树里的点,合法的路径一定是qlql到qrqr的某个数加上自己到重心的距离 定义五元组(v,l,m,r,w)(v,l,m,r,w),表示当前路径长度为vv,在[l,r][l,r]里选出最原创 2017-02-23 12:54:28 · 740 阅读 · 0 评论