树上信息统计_专题_LCA
JueFan 一只绝帆

树上信息统计

绝大多数时候,我们会统计树上联通信息,例如子树信息、链信息、邻域信息。

联通信息有时可以点边容斥。

虚树、子树、链、普通连通块通常在 lca\rm lca 处统计,邻域通常在中心处合并。

O(1) 链 max

对树建极值分治树,等价于查询 lca\rm lca

不以点数为体积的树上背包

树上启发式合并,nklognnk\log n

dsu on tree 可以视为树上扫描线

P8981 「DROI」Round 1 距离

若对于树上两点 u,vu,v,满足 xG,dis(u,x)dis(u,v)\forall x \in G,\operatorname{dis}(u,x) \leq \operatorname{dis}(u,v) dis(v,x)dis(u,v)\operatorname{dis}(v,x) \leq \operatorname{dis}(u,v),那么我们称无序点对 (u,v)(u,v)极远点对

同时,树 GG 上一点 xx 的权值 vxv_x 定义为:满足两点间最短路径经过 xx 的极远点对的数量。

现给定树 GG,求 xGvxk\sum\limits_{x \in G}{v_x^k}998244353998244353 取模的值,其中 kk 是给定的常数,且 k[1,2]k \in [1,2]

对于 100%100\% 的数据,满足 n5×106n \leq 5 \times 10^61k21 \leq k \leq 2

u,vu,v 都必须是直径端点。

P10678 『STA - R6』月

对于一棵有 nn 个节点的树 TT,定义其直径 diam(T)\operatorname{diam}(T) 为任意两个节点之间距离的最大值。

给定正整数 nn 和每个点 ii 的度数 did_i,你需要构造一棵树 TT^\prime,同时最小化 diam(T)\operatorname{diam}(T^\prime)

保证至少存在一棵符合要求的树,若存在多个符合要求的答案,输出任意一个即可。

对于 100%100\% 的数据:

  • 2n2×1052 \le n \le 2 \times 10^5
  • 1T1051 \le T \le 10^5
  • n2×105\sum n \le 2 \times 10^5
  • 1di<n1 \le d_i < n
  • 保证至少存在一个合法的解。

首先变成最小化半径,即提点为根然后最小化深度。

调整法可以证明度数大的放上面更优,bfs 一下即可。

给定树,问有多少子集两两距离 k\le k

假装 kk 是偶数。

对于每个合法方案,我们把它映射到所有中心(到所有点距离不超过半径的点)构成的连通块上。

点边容斥,如果不理解正确性可以看柿子:

合法点集1=合法点集该点集对应的极大连通块的(点数边数)=点集对该点合法点集对该边合法\begin{aligned} &\sum_{合法点集}1 \\=&\sum_{合法点集}该点集对应的极大连通块的(点数-边数) \\=&\sum_{点}点集对该点合法-\sum_{边}点集对该边合法&\end{aligned}

P6845 [CEOI2019] Dynamic Diameter

动态改边,动态求直径,保证正权,强制在线。

按照 dfn 排序,线段树维护区间直径,会被影响的区间是与 [l,r][l,r] 有交但不包含的区间,这就是线段树上区间询问涉及到的区间,暴力重构区间的答案即可。

还要支持单点加链和,差分变成子树加单点查,单 log\log,总复杂度 qlog2nq\log^2 n

 评论
评论插件加载失败
正在加载评论插件
由 Hexo 驱动 & 主题 Keep
总字数 231.7k 访客数 访问量