模板题 可持久化就用主席树实现,学习自这篇博客 #include<bits/stdc++.h> #define N 4000005 using namespace std; int read() { int x=0,f=1;char s=getchar(); while(s<'0'||s>'9'){ ...
分类:
其他好文 时间:
2019-08-17 23:49:36
阅读次数:
91
真kx 之前打一棵沙雕主席树,复杂度和正解一毛一样,结果常数爆炸了! 我一直天真的认为卡卡常这题就能AC,然后卡常卡到死也没A掉,极限数据大概跑了1.1s 今天终于打正解了,离线处理,可以用常数更小的树状数组维护,于是可以A掉 主席树可以在线回答,而且复杂度和正解一样,但是这个常数........ ...
分类:
其他好文 时间:
2019-08-16 23:17:50
阅读次数:
159
#include #include #include #include #include #define LL long long #define rep(i,j,k) for(int i=j;i=k;i--) #define pb push_back #define pii pair #defin... ...
分类:
其他好文 时间:
2019-08-15 21:05:12
阅读次数:
94
主席树也就是指可持久化线段树,大致思想也就是每次利用之前的重复信息,只为被更新的一部分开辟新点。而且所谓可持久化线段树实际上是指可持久化权值线段树,线段树中每个端点存的是这个端点所代表的树的出现次数。 而在主席树的维护当中对于每个历史版本如果都开一颗新树,那么M将是最终的结局。正确解法则是为每一个改 ...
分类:
其他好文 时间:
2019-08-15 06:05:25
阅读次数:
84
权值线段与主席树总结 权值线段树就是把线段树的每个点权,赋予一定的含义,比如数字出现的次数,数值前缀出现的次数,并用区间求和维护一个区间信息,比如数字出现的次数,第K大等(不能实现区间第K大),前缀第K大等。 权值线段树优点: 能够比较容易实现平衡树的一系列操作 一个序列中,插入一个数,删除一个数, ...
分类:
其他好文 时间:
2019-08-14 21:53:18
阅读次数:
112
前置知识 1.线段树。。。 (好像没了 2.(可知可不知,可能会有帮助)动态开点线段树 主席树(可持久化线段树) 一看可持久化,我们总会想到一些恐怖的算法.但是其实理解并不难,而这里我只是将主席树的思想讲清楚(尽量),题还是自己刷(虽然我就没刷几道 先看一道 模板题 题目描述 如题,给定N个整数构成 ...
分类:
其他好文 时间:
2019-08-14 20:10:41
阅读次数:
89
其实这个模板我就花了四个晚上调试,所以代码实现能力弱是个大坑:) 思路 主席树的另一个名字叫做可持久化权值线段树,用于维护多个版本的线段树。由于开多颗线段树的话空间会炸到飞起,所以可以充分利用每棵线段树中的重复部分。比如在第i + 1的版本的末尾新增一个节点,第i + 1棵版本的线段树和第i棵线段树 ...
分类:
其他好文 时间:
2019-08-11 11:06:56
阅读次数:
72
网址:https://scut.online/p/106 题意: 给出一个点权树以$1$为根节点,求子树有几个节点的权值小于等于$k$。 题解: 主席树版本,先对树$dfs$求出第一次进入某节点的时间戳,然后同时处理出子树的节点数,然后求出的$dfs$序中某节点的时间戳后长度为该节点的子树的大小$- ...
分类:
其他好文 时间:
2019-08-10 21:58:03
阅读次数:
115
·线段树 主席树和可持久化线段树有什么区别? 主席树(可持久化线段树) 可持久化线段树(Persistent data structure)最主要的功能就是可以查询历史版本。那么presistent≈president(主席),得名主席树。 给你个问题: 给你一段数列,要求查询一段区间的第k小数。$ ...
分类:
其他好文 时间:
2019-08-10 21:37:38
阅读次数:
75
The Company Dynamic Rankings has developed a new kind of computer that is no longer satisfied with the query like to simply find the k-th smallest num ...
分类:
编程语言 时间:
2019-08-09 01:38:56
阅读次数:
157