CF888-G. Xor-MST-(分治+01字典树,最小异或生成树)
在01字典树上建点。然后考虑怎么使得生成树最小。从高位开始,按当前为1/0将所有数划分为两个集合(两者都不为空的情况下)。这两个集合是分散的,所以我们需要一条边连接它们。暴力枚举选取。但是这样会遇到一个问题,即如何维护一段连续的区间,使得这个区间中的所有元素都在这个集合内。我们只要对a数组排序,然后依次插入字典树即可。所以我们对于树上的每个节点,记录对应的数组区间序号。L数组和R数组表明当前节点对应数组的最小序号和最大序号。分治暴搜即可。#include<bits/stdc++.h
原创
2020-07-28 23:35:10 ·
189 阅读 ·
0 评论