![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
主席树
文章平均质量分 56
goto_1600
我何来寂寞,哪有寂寞可言。
展开
-
Pty loves string 树上主席树,border,kmp Fail树
link题意:给定一个字符串,Q次询问,每次询问一个x,y,代表前后缀拼起来的字符串,询问该字符串在原串中的可重叠匹配次数。Q<=2e5 n<=2e5思路:由于题目给的是[1,x] [n-y+1,n] ,如果匹配的话,那么就是匹配了[l,l+x-1],[r-y+1,r],且l+x==r-y+1,我们前后缀分开考虑,这里仅讨论前缀,对于某个前缀k,考虑在kmp的过程中,它一直通过fail指针暴跳,这里来复习一下fail指针,对于红色指针他他所对应的fail就是黑色指针,那么对于ababa原创 2021-08-19 22:44:47 · 349 阅读 · 0 评论 -
xay loves trees(主席树dfs序 标记永久化优化)
链接题意:思路:早上更新那题的强化版。用线段树尺取,或者主席树,主席树维护从根节点到链上的最大深度。每次插入新节点,询问不符合节点的id,由于区间不相交,这样的值最多一个。 每次更新一下答案就可以了。// Problem: xay loves trees// Contest: NowCoder// URL: https://ac.nowcoder.com/acm/contest/11258/F// Memory Limit: 1048576 MB// Time Limit: 4000 ms原创 2021-08-08 21:42:27 · 414 阅读 · 0 评论 -
(可持久化线段树)主席树
上面就是我的丑图hh,一般主席树开40倍空间就可以了,每次插入的时候只需要比较前一个版本和这一个版本就行了,然后每个版本是区间可减的,比如询问l到r之间的第k大,只需要处理r-(l-1)版本的数量即可。#include<bits/stdc++.h>using namespace std;const int N=200010;struct node{ int l; int r; int sum;}tr[N*40];int cnt;int a[N];int root[N];v原创 2020-11-06 12:24:25 · 258 阅读 · 0 评论 -
主席树,查询区间的第k小值
学习报告:主席树真的nb,如果朴素做要开n个线段树,内存爆炸,优化的方式,每次插入一个数,并不是整个权值线段树都改变了,只是改变logn个节点,我们只需要多开logn个节点就OK,用root数组记录历史个线段树版本,询问区间,可以做相减,询问第k小值,与左树的所有节点sum作比较,如果小就在左边,否则在右边,在右边的时候注意是k-sum,由于值域太大,可以使用离散化,获得每个数的排名,可以把值域缩...原创 2020-04-12 17:26:23 · 300 阅读 · 0 评论