题解 异或

传送门

刚了四个小时并且没有任何用处

一开始尝试按位拆开考虑贡献,但发现极难DP
想了trie树但感觉trie树只能处理两个数的相对关系,于是就没细想
然后正解扔到trie树上了
思路是枚举 \(k\),用trie树处理 \(i\) 和 \(j\)
发现比较大小时我们只需要考虑两者的最高不同位

  • 两个数比较大小时,在trie树上的表现是会在最高不同位分到左右儿子,可以借助这个性质完成一些计数

于是考虑一个 \(a_i\) 一定会在某个地方成为 \(a_k\) 在trie树上的兄弟
此时分类讨论得 \(a_j\) 的这一位一定是和 \(a_i\) 的这一位是一样的
于是若 \(a_j\) 在 \(a_k\) 兄弟的子树中

上一篇:【算法设计与分析】第九章 字符串算法


下一篇:【恋上数据结构与算法】Trie