
主席树
yzyyylx
这个作者很懒,什么都没留下…
展开
-
可持久化并查集
介绍可以查询并查集的历史版本,即几次操作之前的连通状态,有在线与离线两种不同算法.离线算法相比于在线算法,时间复杂度与空间复杂度均要优越得多,若要查询第k次操作之后的状态,则可以视为k节点与此节点相连,否则视为上一节点与此节点相连,则这样将会形成一棵树,记录时用启发式合并,将较小树向较大树合并,而且不进行路径压缩,这样复杂度为O(n*logn),dfs一遍即可.代码(以洛谷 P3402 【模板】可持原创 2018-03-22 18:48:15 · 295 阅读 · 0 评论 -
主席树
作用 用于查询区间第k小值等,本质是线段树,因为是某个主席发明而得名,算法内容与主席无关.实现方法 线段树维护序列的值的个数,并对每一个前缀建一棵线段树(主席树不是这样的,否则空间…),那么要查区间[l,r]就只需要将r这棵树减去(l-1)这棵线段树,在相减后的线段树查找即可(实际不需要再建一棵树). 空间优化:根据上述方法,可以发现相邻两棵线段树的区别只有log,因而后面的线段树可原创 2018-01-24 18:06:01 · 215 阅读 · 0 评论 -
可修改主席树(树状数组套主席树)
作用 普通主席树可以查询区间k小值,但若直接修改,则复杂度极大,而可修改主席树通过树状数组的辅助来修改,大大缩小了时间复杂度,缺点是空间复杂度过大. 修改的时间复杂度为O((logn)^2),空间复杂度为O(n*logn^2).实现方法 为了减小修改复杂度,可以修改每个区间管理的范围. 传统主席树每个点对应的主席树管理一个前缀,而可修改主席树因为树状数组在处理动态区间和上有优势原创 2018-01-26 19:57:39 · 630 阅读 · 0 评论 -
bzoj4556 [Tjoi2016&Heoi2016]字符串
题面题意给出一个字符串,每次询问给出四个数a,b,c,d,求子串a~b的所有子串与子串c~d的最长LCP。做法首先可以发现答案有可二分性,因此可以先二分答案,这样问题就转化为了问左端点为a~(b-mid+1)的所有后缀中是否存在一个后缀与以c为左端点的后缀的LCP大于等于mid。 这个可以利用后缀数组来解决,首先二分求出与以c为左端点的后缀的LCP大于等于mid的后缀排名的范...原创 2018-07-28 09:02:04 · 572 阅读 · 0 评论 -
BZOJ1926 [SDOI2010]粟粟的书架
题面题意1.给出一个矩形(200*200),每次询问给出一个子矩形和一个数,问在这个子矩形中至少选几个数,使它们的和大于等于给出的数。 2.给出一列数(500000),每次询问给出一个区间和一个数,问在这个区间中至少选几个数,使它们的和大于等于给出的数。做法考虑二分选出数的最小值,这样问题就转化为了:每次判断某个范围内大于等于某数的和是否大于等于给出数。 1.只要用二维...原创 2018-08-28 12:46:39 · 181 阅读 · 0 评论