Loading

一种 树上链问题 转 二维数点问题 的方法

一种 树上链问题 转 二维数点问题 的方法

例题:2024.11.21 T3焰硝庭火舞,P3242 [HNOI2015] 接水果

使用场景:一个(组)元素对包含他的链造成影响。静态问题

使用方法:

首先求出每个点的 DFS 序,那么每个点的子树内所有点的 DFS 序连续,记 \(L_u,R_u\)\(u\) 子树内 DFS 序的最小值与最大值。考虑画出 \(n\times n\) 的二维平面,每个点 \((i,j)\) 表示一条路径 \(i\to j\)

如果要求对同时包含了点对 \((u,v)\) 的链进行某种操作,假设是权值加 \(1\),分类讨论:

  • \(u,v\) 之间无直系亲属关系,相当于对于链头分别在 \(u,v\) 的子树里的链加 \(1\),相当于对矩形 \(((L_u,L_v),(R_u,R_v))\) 与矩形 \(((L_v,L_u),(R_v,R_u))\) 里的点加 \(1\)。可以证明这两个矩阵不交。

  • \(u,v\) 有直系亲属关系,假设 \(u\)\(v\) 的祖先,找到 \(u\) 的儿子 \(w\) 满足 \(w\)\(v\) 的祖先,那相当于对矩形 \(((1,L_v),(L_w-1,R_v))\) ,矩形 \(((R_w+1,L_v),(n,R_v))\),矩形 \(((L_v,1),(R_v,L_w-1))\),矩形 \(((L_v,R_w+1),(R_v,n))\) 单点加 \(1\)。可以证明这些矩形不交。

因为二位数点问题的动态矩阵修改很难写,所以一般是在静态问题中用扫描线做。

2024.11.21 T3焰硝庭火舞告诉我们树上的点对可以看作链。

posted @ 2024-11-21 15:31  lupengheyyds  阅读(28)  评论(0)    收藏  举报