NC50993. The XOR Largest Pair
描述
输入描述
第一行一个整数N,第二行N个整数。
输出描述
一个整数表示答案。
示例1
输入:
3 1 2 3
输出:
3
C++(g++ 7.5.0) 解法, 执行用时: 67ms, 内存消耗: 13276K, 提交时间: 2022-11-09 16:57:40
#include<bits/stdc++.h> using namespace std; const int N = 3e6+50; int ch[N][2],tot; void insert(int x){ int u=0; for(int i=30;~i;i--){ int v=(x>>i)&1; if(!ch[u][v]) ch[u][v]=++tot; u=ch[u][v]; } } int query(int x){ int res=0,u=0; for(int i=30;~i;i--){ int v=(x>>i)&1; if(ch[u][v^1]) v^=1,res|=1<<i; u=ch[u][v]; } return res; } signed main(void){ ios::sync_with_stdio(false);cin.tie(0); int n,res=0,x; cin>>n; for(int i=1;i<=n;i++){ cin>>x; res=max(res,query(x)); insert(x); } cout<<res; }
C 解法, 执行用时: 936ms, 内存消耗: 1728K, 提交时间: 2023-03-05 20:54:29
#define M 100000 #include<stdio.h> #include<stdlib.h> int main() {int n;int a[M]={}; scanf("%d",&n); int i,j;int mine; for(i=0;i<n;i++) { scanf("%d",&a[i]); } int m=a[0]^a[1]; for(i=0;i<n-1;i++) {for(j=i+1;j<n;j++) { m=a[i]^a[j]; if(m>=mine) mine=m;}} printf("%d",mine); return 0; }
C++(clang++ 11.0.1) 解法, 执行用时: 932ms, 内存消耗: 748K, 提交时间: 2023-03-26 09:04:06
#include<bits/stdc++.h> using namespace std; int a[100010]; int n,ans; int main(){ cin>>n; for(int i=0;i<n;i++)cin>>a[i]; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ ans=max(ans,a[i]^a[j]); } } cout<<ans; return 0; }