C. Xor Tree(分治)

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C. Xor Tree(分治)相关的知识,希望对你有一定的参考价值。

C. Xor Tree(分治)

从最高位开始分组,如果最高位都相同则继续递归下一位。

否则分成两部分,显然具有相同位的数才可能相连。

需要注意的情况就是某一个部分只有一个数时,是可以与另一个集合相连通的。

所以我们就取集合较大的那一部分+1,作为答案数组,其他的都删掉。

然后递归终止条件直接返回1.

int n;
vector<int>a;
int dfs(int x,int l,int r){
	if(l==r) return 1;
	if(!(a[l] & x) || (a[r] & x)) return dfs(x>>1,l,r);
	int m;
	for(int i=l;i<=r;i++) if(a[i] & x) m=i;
	return 1+ max(dfs(x>>1,l,m),dfs(x>>1,m+1,r));
}
int main(){
	scanf("%d",&n);
	a.resize(n);
	for(int i=0;i<n;i++) scanf("%d",&a[i]);
	sort(a.begin(),a.end(),greater<int>());
	printf("%d\\n",n-dfs(1<<29,0,n-1));
	return 0;
}

以上是关于C. Xor Tree(分治)的主要内容,如果未能解决你的问题,请参考以下文章

Namomo Spring Camp 2022 Div1 XOR Inverse Codeforces Round #673 (Div. 1) C. XOR Inverse 按位贪心模拟/字典树分治

Namomo Spring Camp 2022 Div1 XOR Inverse Codeforces Round #673 (Div. 1) C. XOR Inverse 按位贪心模拟/字典树分治

C. Ternary XOR1200 / 思维 贪心

[HDU4867]Xor (线段树分治+类数位dp)

二进制二项式定理组合数C. Moamen and XOR

CF #737(div2)C. Moamen and XOR,位运算,结论题,推公式