数据结构复习

数据结构

two permutation

平衡树维护哈希值

合并

启发式合并

适合只有合并没有拆分的问题

树链剖分

左偏树

fhq_treap合并

满足一颗子树内的所有节点都小于另一颗子树

排布石头

平衡树启发式合并

树上启发式合并

树上的子树问题,比如树上众数问题
全局维护数据结构,可以不好合并,但是只需要单点插入单点删除即可。

CCPC Final 2019 K

对树上每个点维护子树内所有点编号构成的连续段个数

笛卡尔树

满足堆性质的二叉树,中序遍历为原序列,每个点为其子树的最值,常用来处理区间最值相关问题。反映了大小关系的层次结构。

O(n)建树

维护单调栈维护右链,相当于对原序列维护一个单调栈中的所有元素

Special Segments Of Permutation

查询有多少区间,满足端点处的数之和等于区间最大值
区间最大值等于区间端点的lca

可以转化为树上问题,利用树上启发式合并解决,然后因为一共只有两个儿子,然后需要处理出一个儿子的桶,然后dfs另一个儿子,所以我们每次启发式合并,每次继承重儿子的桶,然后暴力搜索轻儿子。

线段树合并

雨天的尾巴

有一颗树,第i次操作将树上路径的每一个点放一个i,最终对每个点求其中出现次数最多的数。显然需要数据结构维护,然后是一个离线问题,并且是一个树上问题,所以我们就可以使用线段树合并解决这个问题了。

线段树优化建图

利用线段树可以把一个区间拆分为log个节点的性质。

  1. 一个点向一个区间内的所有点连边
  2. 一个区间内所有点到一个点连边
  3. 区间内所有点到另一个区间连边,可以利用一个中间点转化为1和2

可持久化

可以处理线性的问题或者树形的问题

回家

n个点m条边的有向图,每条边的权值是2^li,求s到t的最短路输出答案对998244353取模的结果。

只需要用可持久化线段树维护二进制,然后加数可以快速维护,只需要修改log个线段树节点,然后还需要维护一下哈希值,就可以快速查询lcp就可以O(logn)比较两个数的大小。

可持久化并查集

???

离线加强版

假的可持久化,版本之间构成了一个版本树,每个版本由自上而下的操作构成,如果在全局维护可支持栈序撤销的数据结构那么对版本树离线dfs即可。

序列分块

二维数点

强制在线,求一个矩形内的点的权值和,带修改

分块

外侧对x进行排序,然后在块内部对y进行排序。然后查询的时候整块可以进行二分,零散点暴力。然后修改就可以进行

2020CCPC黑龙江省赛 I.Inkball FX

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值