12.1 省选训练总结2(1) 点分治/平衡树
来源:互联网 发布:acdsee软件 编辑:程序博客网 时间:2024/06/05 08:36
目录
点分治
Splay
完成情况截图
聪聪可可
普通平衡树
文艺平衡树
宠物收养所
Cards Sorting
点分治
首先找重心,然后对过了重心的路径计算,最后递归点分。
前4道题是点分裸题,就不赘述。
Amazing Prime
给定一棵树,边带权(
对于每一个答案,计算式:
所以对于所有
采药人的路径
给你一棵树,边带权(
这个题首先我们把前缀和中有和这个前缀和相等的,给他打标记。这样意思就是说到重心的路上有一个可以作为中间点的。
然后可以匹配的点分四类:
为
为
不为
不为
Attack and Defence
给你一棵树,每个点有一个左括号或者右括号,问你树上能够完美匹配的路径数量(
首先
合法的左半边:前缀和均大于
合法的右半边:前缀和均小于
然后一般的点分思想,只是不合法的就不计答案并且不加入维护。
Splay
Splay通过大量的Splay逐渐使其平衡。Splay可做几乎所有动态的区间操作问题。
普通平衡树,文艺平衡树,以及宠物收养所是板题,就不总结。
Book 书架
给定初始时书架上从上往下的书本的编号,维护这个书架,支持放到顶,放到底,前移一个,后移一个,询问。
首先左右设置足够大的空间,然后放到底放到顶就放到左右的空位,前后移就是和前驱后继交换。
永无乡
维护一张点带权无向图,支持连接某两个点,询问某个连通块内权值的K小值是多少。
一个纯纯的无旋Treap好不好!当然也可以Splay启发式合并。
Army Formations
给你一颗树,每个结点的儿子数不超过
启发式合并!每一次将Splay大小较小的结点的权值全提取出来塞到较大的里面。每一个有点大的值会使一些小值后移,后移一个的增加代价就是他自己。
Cards Sorting
一列卡片,一个人,每次从卡片的最左端开始,依次看过去,如果它是当前的全局最小值,那么将它移除,如果不是,那么将它放到序列的最右端。持续到序列为空为止。问你他进行的这两种操作的总次数。
首先想法是找到最小值,把最小值前的区间活摘下来放到末尾。细思发现只需要Splay删除点到根然后交换左右子树就好了!
总结
树上路径问题可以考虑点分治,主要考虑如何求跨过重心的路径,细节要注意多考虑,包括是否选入重心、是否算重等等。
Splay可以解决大多数区间动态操作。应熟练掌握模板!
- 12.1 省选训练总结2(1) 点分治/平衡树
- 【树的点分治】【平衡树】[POJ1741]Tree
- BZOJ 3648|寝室管理|点分治|树状数组|平衡树
- [平衡树+启发式合并 || 点分治] POJ1741 Tree
- 树分治-点分治
- 点分治总结
- 【点分治总结】
- 点分治总结
- 点分治总结
- 树的分治-点分治
- 树分治(点分治+边分治)
- 12.1 省选训练总结
- poj 1741 洛谷 3806 【模板】点分治1 树的分治 点分治
- poj 1741 洛谷 3806 【模板】点分治1 树的分治 点分治
- 树的点分治
- 树的点分治
- [总结] 平衡树总结
- 【jzoj4715】【树上路径】【树】【分治】【点分治】
- Java中Calendar.DAY_OF_WEEK、DAY_OF_MONTH需要减一的原因
- 表集合的extend属性
- Android RxJava操作符详解系列: 创建操作符
- PostMessage
- 大型网站技术架构(二)——架构模式
- 12.1 省选训练总结2(1) 点分治/平衡树
- 简单的MVP写法(二)
- 机器学习实战(5)逻辑回归
- python numpy 数组中元素大于等于0的元素
- 点赞, 飘赞动画
- CSS3的过渡和动画
- 一款超好用的二级菜单
- Mac tcp/udp 调试工具
- Java WebService 简单实例