标签:建立 最大 融合 离散 mil 数组 结构 网络 span
·这里原本准备整理本校OJ上的经典题,但作者水平有限。
·萌新妹子刚学OI……只好把自己会的水题挂上来充数了。
·树套树
·二维线段树
二维线段树,比较模板。以身高活泼值分别建立外层和内层线段树,维护缘分最大值。由于只有1位小数浮点强制转int,注意数据范围。
还是二维线段树,一共是三维,于是外层长度,内层宽度,维护高度Max。每次在区间上进行操作。最后统计一下总数。
·树状数组套线段树
这题刚开始偷懒写的二维线段树被卡到80,于是换成树状数组套线段树。就是外层每次用树状数组求qsum(R)-qsum(L-1),用于查询rank。当然不要求强制在线可以一起读进来然后离散化。
静态树上的维护,很巧妙。每次把u,v,lca,falca抽出来。由于s[u],s[v]是+,s[lca],s[falca]是-,所以每次以从u,v开始每次-lowbit(i),把这些前缀扔进+容器。同理从lca,falca开始每次-lowbit(i),把这些前缀扔进-容器。接着在查询时由于查询第K大,cnt+=s[rs[t1[i]]],cnt-=s[rs[t2[i]]];如果cnt>=rk则向右子树移,否则rk-=cnt,向左子树移。
·线段树合并
由于删除操作很麻烦,而且只有删除,合并,修改,没有添加,所以想到离线倒序。由于存在合并,所以要写线段树合并。计算每个连通块内第K大肯定使用并查集维护代表元,然后在代表元所属的线段树里面查询第K大。
这题网上的做法各种各样,离线可以树状数组求二维数点,长链剖分在dfs序上修改,在线可以主席树插入值,线段树合并,还有很多做法。用线段树合并
·可持久化数据结构
·可持久化线段树
·可持久化并查集
·OJ上暂时没有
·可持久化Trie树
·LCT
·LCT基础操作
·LCT动态加边最小生成树
·LCT动态维护重心
·LCT维护子树信息
·可并堆
·正常的可并堆
·魔改:可以执行可并堆操作的暴力
·莫比乌斯反演
·FTT NTT MTT
·kruskal重构树
标签:建立 最大 融合 离散 mil 数组 结构 网络 span
原文地址:https://www.cnblogs.com/Kylin-xy/p/12052084.html