[APC001F]XOR Tree

[APC001F]XOR Tree

总结:

一道非常巧妙的题目,考虑将边权转化成点权,也就是给每一个点赋一个点权,将操作转化成选择两个点,同时异或上一个值,最后全部变成 \(0\) 的最小操作次数。

这里非常巧妙,我们将每一个点的点权设置为与其相邻的边权异或和。

于是我们考虑证明,最后点权 \(=0\) 等价于边权 \(=0\)

我们考虑剥叶子的过程,也就是说,一开始所有叶子的权值就等于与其相连的边的权值,也就是说,这个时候点权 \(=0\) 是等价于边权 \(=0\) 的,然后我们将所有的边剥掉,于是剩下的我们考虑归纳,这样就证明了上面的东西。

于是我们一开始将所有点权相同的两个异或,这样的话一定不劣。然后考虑所有剩下的数 \(\leq 15\),并且每个数最多只会出现一次,我们暴力状压之后记忆化搜索一下,时间复杂度 \(\Theta(2^{16} \times 16^2)\) 可以通过。

代码

posted @ 2024-01-12 21:37  AntelopeWang  阅读(10)  评论(0)    收藏  举报