CF888G XOR-MST 最小异或生成树

CF888G XOR-MST

链接

CF888G

思路

trie上贪心,先左右两边连边,再用一条边的代价连起左右两颗树。因为内部的边一定比跨两棵树的边权笑,显然是对的。
代码自己瞎yy的。启发式合并

代码

#include 
#define ll long long
using namespace std;
const int _=2e5+7;
int n,a[_],ch[_*30][2],siz[_*30],cnt,col,rt[_*30];
ll ans;
std::vector dsr[_*30];
void insert(int x) {
    int p=0;
    for(int i=29;i>=0;--i) {
        bool k=x&(1LL<=0;--i) {
        bool k=x&(1LL<

你可能感兴趣的:(CF888G XOR-MST 最小异或生成树)