B题求异或最小值,即同或最大值(过了94,哭了)Help

#include<iostream>

#include<map>

#include<algorithm>

using namespace std;

unsigned int a[200020],ni=0x3f3f3f3f;

unsigned int n,m,pan=0;

map<unsigned int,unsigned int> mp;

int main()

{

cin>>n>>m;

for(long long i=1;i<=n;i++)

{

cin>>a[i];

mp[a[i]]++;

if(mp[a[i]]>=2){pan=1;}

}

sort(a+1,a+1+n);

if(pan)cout<<(1<<m)-1<<endl;

else{

for(long long i=1;i<n;i++)

{

ni=min(ni,a[i]^a[i+1]);

}

cout<<(1<<m)-1-ni<<endl;

}

}

全部评论
把unsigned int都开成long long 还要把ni=0x3f3f3f3f再加一个3f就可以了
3 回复 分享
发布于 2024-08-08 10:55 湖南
+1
2 回复 分享
发布于 2024-08-07 17:29 湖南
刚刚解释的好像不对,是不能控制位数的原因
点赞 回复 分享
发布于 2024-08-07 18:02 河南
异或最小不一定同或最大 例如: 4 3 1 1 1 1 1
点赞 回复 分享
发布于 2024-08-07 17:55 河南

相关推荐

评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务