显然可以枚举中间点,然后做完了。
显然的,对于每种颜色,点对中一定包含深度最大的点。
枚举另外一个点即可。
显然我们需要选择深度最深的点和距离该点最远的点,判断其他点是否在它们的路径上即可。
由题意可得要选出 \(u\) 使得 \(dis(u,i)+dis(u,j)+dis(u,k)\) 最小。
首先证明一下 \(u\in\{lca(i,j),lca(i,k),lca(j,k)\}\)
如果 \(u\not\in\{lca(i,j),lca(i,k),lca(j,k)\}\),则将 \(u\) 替换成 \(\{lca(i,j),lca(i,k),lca(j,k)\}\) 中的一个必然能使答案减少。
到这里已经可做了。
实际上我们发现,记 \(3\) 个数分别为 \(u,v,w\),则我们选择 \(u \operatorname{xor} v \operatorname{xor} w\) 为答案(\(u,v,w\) 中有 \(2\) 个相同)。
答案为 \(dep_i+dep_j+dep_k-dep_{lca(i,j)}-dep_{lca(i,k)}-dep_{lca(k,j)}\)。
记 \(sz_i\) 表示 \(i\) 的子树大小,\(calc(x,y)\) 表示 \(y\) 的不含 \(x\) 的子树中的大小。
对于询问 \((a,b,c)\) 我们分情况讨论:
记 \(v=lca(a,b)\)。
- \(c=v\),此时答案为 \(n-calc(a,v)-calc(b,v)\)。
- \(c\in v \rightarrow a\),此时答案为 \(sz_c-calc(a,v)\)。
- \(c\in v \rightarrow b\),此时答案为 \(sz_c-calc(b,v)\)。
- \(c\not\in a \rightarrow b\),此时答案为 \(0\)。
记 \(f_u\) 表示距离 \(u\) 最近的关键点距离 \(u\) 的距离。
dij 可以维护。
问题变为求 \(\min_{ u\in s\rightarrow t}2f_u+dis(s,t)\)。
注意后面这个可以简单求得单独拆出,前面的树剖维护之。
我们令第一次染黑的节点为 \(x\),以 \(x\) 为根建树。
记 \(a_{i}=\min_{u\in i \leftarrow x}u\)。
每次 \(1\) 操作带来的影响有(修改 \(u\)),对于所有 \(p\in\text{black}\):
- 答案均为 \(\min(a_p,a_u)\)。
记录全局最小值即可。
记录 \(s_u=\oplus_{i\in1\rightarrow u}w_i\),则题目要求化为是否存在 \(s_u\oplus s_v\oplus s_{lca(u,v)}\oplus k\) 的点
主席树维护之。
先考虑 \(n^2\) 怎么做。
先特判掉 \(n=1\) 和链。
对于每个点 \(x\),我们令 \(x\) 必选,以 \(x\) 为根 dp。
记 \(f_u\) 表示 \(u\) 的子树全部确定要几个点,则有
\[f_i=\sum_{v\in son_i}f_v+\max(0,\sum_{v\in son_i}[f_v=0]-1) \]对于所有 \(i\) 取 \(\min f_i+1\) 即可。
可以通过 D1。
考虑对于一个度数 \(\ge 3\) 的点 \(i\) 进行 dp,答案为 \(f_i\)。
为什么这样可行?因为保证了至少有一个点在子树外必选。
我们可以发现,\(f(x,y)\) 的状态数不会太多。
考虑证明,记 \(d_x\) 为 \(x\) 层的节点数。
- 当 \(d_x\ge \sqrt{n}\) 时,由于最多只有 \(\dfrac{n}{\sqrt{n}}\le \sqrt{n}\) 层,每层至多调用 \(q\) 次,复杂度 \(q\sqrt q\)。
- 否则由于 \(d_x < \sqrt{n}\),最多有 \(\dfrac{n}{d_x}\) 层,每次调用至多 \(d_x^2\) 次,则状态数是 \(nd_x\le n\sqrt{n}\)。
由于 map 太慢,采用如下优化。
- \(d_x\ge \sqrt{n}\) 时,我们直接暴力,无需记忆化。
- 由于 \(dep_x=dep_y\),则知道 \(x\),知道 \(y\) 是 \(x\) 层的第几个节点就可以确定 \(y\)(代码中的 \(p_i\) )。
- 使用数组代替 map。
发现答案一定在直径上。
之后就是工程题,枚举左端点类似单调队列。
貌似假了/kl(树网的核 93pts)。
标签:Code,dep,Tree,sqrt,答案,lca,calc From: https://www.cnblogs.com/WhisperingWillow/p/18193630