最大异或树
暴力写法
int res = 0;
for(int i = 0; i < n; i){//枚举第一个数
for(int j = 0; j < i; j ){//枚举第二个数
res = max(res,i^j);
//使用trie数优化第二层循环
第二层循环目的是 从a0~ai-1 找到j使得ai^ aj 最大
O(n);
高位越大整个数越大
用trie 每一次O(31)
}
}
食物链
三种可能 三种动物为环的形状
余1 可以吃根节点
余2 可以被根节点吃
余0 表示和根节点同类
并查集 维护每个点到根节点的距离 距离有三类
距离是啥? 告诉我 x吃y 表示 y 为第0代 x 为第1代 z吃x 则 z 为第二代
所有吃第0代为第一代 以此类推
只有三种可能 则 第3和第0同类 第4 和第1 同类
求根节点的距离 维护的是和根节点的距离 所有在进行路径压缩的时候加就OK了