중남대학 교 COJ 1216: 이 또는 최대 치 (데이터 구조)
ACM
제목: COJ 1216
제목: 중국어 문제, 주 의 는 여러 조 의 사례 이다.
분석: 01Trie 로 만 들 었 어 요.
코드:
/*
* Author: illuz <iilluzen[at]gmail.com>
* File: coj1216.cpp
* Create Date: 2014-07-27 14:18:44
* Descripton: trie
*/
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N = 100000<<5;
struct Trie {
int a[2];
int num;
} f[N];
int cnt, ans;
// insert x into the root which id is u, the deep is num
void insert(int x, int u, int num) {
bool k;
for (int i = num; i >= 0; i--) {
k = (1<<i)&x;
if (f[u].a[k] == -1)
f[u].a[k] = ++cnt;
u = f[u].a[k];
}
f[u].num = x;
}
// query xor
void query(int x, int u, int num) {
bool k;
for (int i = num; i >= 0; i--) {
k = (1<<i)&x;
if (f[u].a[!k] != -1)
u = f[u].a[!k];
else
u = f[u].a[k];
}
ans = max(ans, f[u].num^x);
}
int main() {
int n, t;
while (~scanf("%d", &n)) {
memset(f, -1, sizeof(Trie) * N);
cnt = 0;
ans = 0;
while (n--) {
scanf("%d", &t);
insert(t, 0, 31);
query(t, 0, 31);
}
printf("%d
", ans);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.