Codeforces Round #613 (Div. 2) D - Dr. Evil Underscores(思维,位运算)
Posted herlo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #613 (Div. 2) D - Dr. Evil Underscores(思维,位运算)相关的知识,希望对你有一定的参考价值。
题意:对于一个数组,求一个数字与数组每个元素异或之后的最大值最小,求这个最大值
又是位运算,,题目给出数组元素范围在2^30以内,二进制最多30位,从最高位开始贪心,如果此位置的数组元素有的是1有的是0,最后肯定取1,否则取0,还有就是分组讨论,因为每个bit位只能满足原数组中一部分元素异或后为1
#define int ll
vector<int>a;
int solve(vector<int>v,int bit)
{
if(bit<=0||v.size()==0) return 0;
vector<int>zero,one;
rep(i,v.size())
{
if((v[i]>>bit)&1) zero.push_back(v[i]);
else one.push_back(v[i]);
}
if(zero.size()==0) return solve(one,bit-1);
if(one.size()==0) return solve(zero,bit-1);
return (min(solve(one,bit-1),solve(zero,bit-1))|1<<bit);
}
signed main()
{
int n;cin>>n;
a.resize(n);cin>>a;
cout<<solve(a,30)<<endl;
return 0;
}
以上是关于Codeforces Round #613 (Div. 2) D - Dr. Evil Underscores(思维,位运算)的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #613 (Div. 2)
Codeforces Round #613 (Div. 2) B. Just Eat It!
Codeforces Round #613 (Div. 2)D(贪心,分治)
Codeforces Round #613 (Div. 2) D. Dr. Evil Underscores
Codeforces Round #613 (Div. 2) B. Just Eat It!
Codeforces Round #613 (Div. 2) D - Dr. Evil Underscores(思维,位运算)