点分树
SC.ldxcaicai
我很菜=_=
展开
-
2018.08.28 洛谷P3345 [ZJOI2015]幻想乡战略游戏(点分树)
传送门 题目就是要求维护带权重心。 因此破题的关键点自然就是带权重心的性质。 这时发现直接找带权重心是O(n)的,考虑优化方案。 发现点分树的树高是logn级别的,并且对于以u为根的树,带权重心要么就是u,要么存在于u的某一个儿子为根的子树中。 由于带权重心只有一个,因此只需要从根节点开始向下跳,跳不动了就是答案。 代码: #include<bits/stdc++.h>...原创 2018-08-28 13:20:21 · 145 阅读 · 0 评论 -
bzoj1095: [ZJOI2007]Hide 捉迷藏(动态点分治)
传送门 蒟蒻真正意义上做的第一道动态点分治! 题意:给一棵最开始所有点都是黑点的树,支持把点的颜色变成从黑/白色变成白/黑色,问当前状态树上两个最远黑点的距离。 思路: 首先考虑不带修改一次点分治怎么做的。 显然对于每个树上的节点ppp可以对它的每一个儿子vvv维护一个静态的集合BvB_vBv表示vvv子树中所有点到ppp的距离,然后对于ppp这个点可以维护一个静态集合CpC_pCp来记录所...原创 2019-01-10 20:26:14 · 277 阅读 · 2 评论 -
bzoj3730: 震波(点分树+bit)
传送门 点分树板题。。。 然而并没有遇到卡常之类的事。。。 对于分出来的每一层用两棵BitBitBit动态维护到自己距离不超过kkk的与到自己点分树父亲距离不超过kkk的点数。 代码: #include<bits/stdc++.h> #define ri register int using namespace std; const int rlen=1<<18|1; in...原创 2019-06-26 17:14:07 · 157 阅读 · 0 评论