Tree-树链剖分
Dream_Lolita
退役OIer,转战ACM
展开
-
【树链剖分】LGP3613 睡觉困难综合征
树链剖分原创 2017-12-12 16:20:45 · 254 阅读 · 0 评论 -
【树链剖分/其它】LOJ3088 「GXOI / GZOI2019」旧词
【题目】 LOJ 给定一棵nnn个点的树,常数kkk,以及QQQ个询问,每次询问: ∑i≤xdep(lca(i,y))k\sum_{i\leq x}dep(lca(i,y))^ki≤x∑dep(lca(i,y))k 答案对998244353998244353998244353取模。 【解题思路】 练一下板子。 离线询问,然后按xxx从小到大计算贡献,每次相当于到到根路径上分别加权dep(u)k−...原创 2019-04-23 11:23:47 · 245 阅读 · 0 评论 -
【树链剖分+可持久化线段树】CC_QUERY Observing the Tree
【题目】 CC 给定一棵nnn个点的带点权树,支持链加等差数列,求链和,回到第xxx次修改的版本。 n,m≤105n,m\leq 10^5n,m≤105 【解题思路】 练手(毒瘤)题。 没有回退操作的话就是一些基本操作了,维护一下斜率和截距就可以了。有回退的话再可持久化一下就好了。 【解题思路】 #include<bits/stdc++.h> using namespace std; ...原创 2019-04-25 21:48:16 · 305 阅读 · 0 评论 -
【树链剖分+差分】CC_DGCD Dynamic GCD
【题目】 Codechef 给定一棵nnn个点的点权树,mmm次操作 询问一条路径上所有数的gcdgcdgcd 将一段路径的点权加上ddd 【解题思路】 首先考虑序列上的问题。 我们处理gcdgcdgcd有一个辗转相减法,即gcd(a,b)=gcd(b−a,b)gcd(a,b)=gcd(b-a,b)gcd(a,b)=gcd(b−a,b)。于是我们维护一个原序列和一个差分序列,其中差分序列用线段...原创 2019-02-25 22:05:56 · 297 阅读 · 0 评论 -
【树剖+线段树+堆/整体二分+BIT】BZOJ4538 [Hnoi2016] 网络
【题目】 BZOJ 给定一棵nnn个点的树,支持三种操作: 给树的一条路径打上一类标记 删去一类标记 求未经过某个点的所有标记的最大权值。 n,Q≤2×105n,Q\leq 2\times 10^5n,Q≤2×105 【解题思路】 如果我们二分答案,那么问题就变成了求是否所有权值大于等于KKK的路径都没有经过某个节点。 这个问题可以利用树上差分,在(u,v)(u,v)(u,v)打上+1+1+1...原创 2019-03-01 11:42:19 · 190 阅读 · 0 评论 -
【双树问题-树剖+线段树合并】CC_EDGEST Edges in Spanning Trees
【题目】 Codechef 给定相同点集(大小为nnn)上两棵生成树T1,T2T_1,T_2T1,T2。对于T1T_1T1中每条边,求T2T_2T2中有多少条边满足: T1−e1+e2T_1-e_1+e_2T1−e1+e2(从T1T_1T1中删去e1e_1e1再加上e2e_2e2)是一棵生成树 T2−e2+e1T_2-e_2+e_1T2−e2+e1是一棵生成树 n≤2...原创 2019-02-22 21:52:42 · 529 阅读 · 0 评论 -
【单调栈/树链剖分】CF860E Arkady and a Nobody-men
【题目】 CF 给定一棵nnn个节点的有根树,定义f(x,y)f(x,y)f(x,y)(其中yyy是xxx的祖先)表示yyy后代中除xxx以外深度不大于xxx的节点数。定义g(x)=∑f(x,y)g(x)=\sum f(x,y)g(x)=∑f(x,y)。求所有g(x)g(x)g(x)。n≤5×105n\leq 5\times 10^5n≤5×105 【解题思路】 一个比较naive\text{na...原创 2019-01-30 15:46:42 · 228 阅读 · 0 评论 -
【树链剖分+线段树】CF960H Santa's Gift
【题目】 原题地址 给定一棵nnn个节点的有根树和一个参数CCC,每个节点有一个编号fif_ifi,范围为1∼m1\sim m1∼m,每种编号有一个权值cic_ici,有两种操作: 修改一个点的编号 给出xxx,记cnticnt_icnti为树中节点iii子树中编号为xxx的节点个数,求∑i=1n(cnti⋅cx−C)2n\frac {\sum_{i=1}^n(cnt_i\cdot c_x...原创 2019-01-05 10:39:26 · 347 阅读 · 1 评论 -
【树链剖分】BZOJ2896 桥
【题目】 原题地址 给定一幅nnn个点mmm条边的无向图,两种操作 删除一条边 询问两点间有多少条边是桥边 n≤3×104,m≤105,Q≤4×105n\leq 3\times 10^4,m\leq 10^5,Q\leq 4\times 10^5n≤3×104,m≤105,Q≤4×105 【解题思路】 首先考虑暴力,我们每次删边后,将图的边双缩起来,那么两点间桥的数量就是这两点所在边双在树上的...原创 2018-12-15 22:14:32 · 249 阅读 · 0 评论 -
【树链剖分】【UR #4】UOJ53 追击圣诞老人
原题地址 【题目分析】 一看这个数据范围,标准的数据结构题,而且基本上就是O(nlogn)O(nlogn)的算法了。 这道题花了我2h+才搞定,可以说我是很弱了。 注意一个城市可以经过多次。 【解题思路】 算法1 暴力枚举所有长度不超过k的路线,复杂度O(nk)O(n^k),可以得到10pt 算法2 考虑路线权值的增加对答案的影响,令W(A)W(A)表示一种路原创 2019-07-15 12:29:51 · 683 阅读 · 2 评论 -
【长链剖分】CF1009F Dominant Indices
【题目】 CF 给定一棵nnn个节点的数,定义dx,id_{x,i}dx,i表示子树内和xxx距离为iii的节点数,对每个xxx求使得dx,id_{x,i}dx,i最大的iii,若有多个输出最小的。 n≤106n\leq 10^6n≤106 【解题思路】 一个简单的状态转移就是dx,i=∑v∈sonxdv,i−1d_{x,i}=\sum_{v\in son_x}d_{v,i-1}dx,i=∑...原创 2019-04-25 06:58:04 · 314 阅读 · 0 评论