Gravatar
终焉折枝
积分:1449
提交:196 / 358

T1 - Output Only 题解

题目简述

题目大意

给定一棵 $N$ 个节点的有根树,根为 1。每个节点有一个初始颜色 $c_i \in [0, k-1]$。

操作:选择一个节点 $u$ 和颜色 $p$,将 $u$ 及其子树内所有节点的颜色 $c_v \leftarrow (c_v + p) \pmod k$。

目标:通过若干次操作,使所有节点颜色变为 0。题目要求在发生 $Q$ 次单点颜色修改 $(w_i, x_i)$ 后,分别求出达成目标所需的最少操作次数。

  • $N, Q, k \le 2 \times 10^5$

The Key:利用 差分 的思想,将子树修改转化为对“父子颜色关系”的维护。这是一个典型的树上差分或转化贡献维度的思维题。


子任务分析

Subtask 1:树是一条链

当树是一条链(例如 $1 \to 2 \to \dots \to N$)时,我们可以利用序列差分的思想。定义 $d_i = (c_i - c_{i-1}) \pmod k$,其中 $c_0 = 0$。

对于以 $u$ 为根的子树(链上的后缀)进行操作,只会改变 $d_u$ 的值,而不会影响 $d_{u+1} \dots d_N$。为了让所有 $c_i = 0$,等价于让所有差分值 $d_i = 0$。如果某位置 $d_i \neq 0$,我们就必须在 $i$ 处进行一次操作来修正它。因此答案为 $\sum_{i=1}^N [d_i \neq 0]$。

时间复杂度:$\mathcal{O}(N + Q)$

Subtask 2:$k=2$

当只有两种颜色时,问题可以简化为统计 坏边。考虑一条边 $(u, v)$,其中 $u$ 是 $v$ 的父节点。

如果在 $v$ 处不进行任何操作,那么 $v$ 的颜色变化量将完全取决于 $u$ 的变化量。即操作后 $c'_v - c'_u \equiv c_v - c_u \pmod k$。要使最终 $c'_v = c'_u = 0$,必须满足 $c_v - c_u \equiv 0$。如果初始 $c_v \neq c_u$,我们就必须在 $v$ 处进行一次操作。对于 $k = 2$,这等价于统计两端颜色不同的边数(根节点视作父节点颜色为 0)。

Subtask 4:$N, Q \le 5 \times 10^4$

对于一般情况,可以考虑 根号分治

  • 按照节点的度数 $\deg$ 分为大点和小点。
  • 修改小点时,直接暴力遍历其所有相邻边,更新答案。
  • 修改大点时,更新大点的信息,维护大点与大点之间的关系。

时间复杂度:$\mathcal{O}(Q\sqrt{N})$


正解思路

根据上述性质探索,我们可以得到核心结论:



........................................................................

该题解待审

........................................................................(剩余 2697 个中英字符)