加载中...

ABC 451 G

G - Minimum XOR Walk

首先需要一个关键结论:在无向连通图中,从 \(u\)\(v\) 的任意可达路径的最小异或和,等于从 \(u\)\(v\) 的任意一条简单路径的异或和 \(s\) 关于该图中所有环的异或和构成的线性基的最优解。(最大异或和同理)

具体证明见 线性基

通过处理图中所有环(将它们的异或和均插入到线性基中),并钦定图中的某一棵生成树(任意点对之间的简单路径在该生成树上),我们可以得到任意一条路径 \((u, v)\) 的答案,但暴力统计每一条路径的复杂度是 \(O(n^{2})\) 的,需要考虑优化。

结论:线性基存在线性映射性质。设初始值为 \(x\)\(x\) 关于线性基求最小异或和的最优解为 \(f(x)\),则:

\[f(x \oplus y) = f(x) \oplus f(y) \]

peGg5nI.png

设在钦定的生成树中,从根节点到 \(u\) 的路径异或和为 \(a_{u}\),则路径 \((u, v)\) 的答案为 \(f(a_{u} \oplus a_{v})\)

我们需要统计:

\[\sum_{1\le u < v \le n} [f(a_{u} \oplus a_{v}) \le k] \]

经过上式转化:

\[\sum_{1\le u < v \le n} [f(a_{u}) \oplus f(a_{v}) \le k] \]

于是,通过 \(O(n\log A)\) 预处理出序列 \(b_{i} = f(a_{i})\)\(i \in [1, n]\), 问题就变成了:给定一个长度为 \(n\) 的序列与定值 \(k\),统计满足 \(b_{i} \oplus b_{j} \le k\)\(1 \le i < j \le n\)\((i, j)\) 数量。显然可以用 01Trie 解决。

code

posted @ 2026-04-01 19:11  小橘奏  阅读(24)  评论(0)    收藏  举报