树链剖分
文章平均质量分 53
a1214034447
这个作者很懒,什么都没留下…
展开
-
SPOJ - QTREE 树链剖分
题解思路:时间复杂度:由于任一轻儿子对应的子树大小要小于父节点所对应子树大小的一半因此从一个轻儿子沿轻边向上走到父节点后 所对应的子树大小至少变为两倍以上经过的轻边条数自然是不超过log2Nlog2N的然后由于重链都是间断的 ((连续的可以合成一条))所以经过的重链的条数是不超过轻边条数+1+1的因此经过重链的条数也是loglog级别的综合可知原命题得证#include<bits/stdc+...原创 2018-04-21 22:24:38 · 219 阅读 · 0 评论 -
hdu 6430 - DSU on tree(树上启发式合并)
题目链接:点击这里 解题思路: 根据树链剖分将子树分为重儿子和轻儿子。 那么我们的DSU实际是就是这个基础上的暴力了。对于一个子树。因为dfs肯定是先处理完儿子之后再处理父亲。那么我在处理一颗子树的时候如果它是他父亲的重儿子就保留它的结果,对于所有的轻儿子要消除影响。那么对于一颗子树我们每次都只要去暴力它的所有轻儿子就可以了。 时间复杂度: 对于u这个节点,wi是它的祖先,wj是w...原创 2018-08-23 14:50:01 · 290 阅读 · 0 评论 -
ACM-ICPC 2018 焦作赛区网络预赛 E - 树链剖分 + 多重标记
题目链接:点击这里 解题思路: 如果这题只有乘法和加法操作那么我们可以直接套树链剖分 + 多重标记,那么我们就想办法把取反变为加法和乘法. !x = (2^64-1) - x, -x % (2^64) = (2^64-1)*x % (2^64) , !x = (2^64-1)*x + (2^64-1) 这样就把取反也转化成加法和乘法的操作啦. 而且我们并不需要去快速乘,因为数...原创 2018-09-17 20:26:02 · 198 阅读 · 0 评论 -
牛客国庆集训派对Day6 I - 树链剖分
题目链接:点击这里 解题思路; 懒人标记树链剖分更新区间最大值,然后每次查询区间内最大值有等于K的,之后改为-inf. 时间复杂度O(n*logn*logn) #include<bits/stdc++.h> #define inf 0x3f3f3f3f #define lson l,mid,rt<<1 #define rson mid+1,r,rt&l...原创 2018-10-09 21:14:02 · 91 阅读 · 0 评论 -
4543: [POI2014]Hotel加强版[树形DP+长链剖分]
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4543 解题思路: 长链剖分 定义: f[i][j]表示以i为根节点的子树,有多少个节点和i的距离是j的. g[i][j]表示以i为根节点的子树,在子树外一个距离i为j的点可以跟i子树内的两个点组成两两相等的方案数. 那么就有: f[u][j+1] += f[v][j]...原创 2019-06-03 16:57:39 · 169 阅读 · 0 评论