U102380-简单数据结构题【Trie】
生活随笔
收集整理的這篇文章主要介紹了
U102380-简单数据结构题【Trie】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
%%%\%\%\%%%%北大爺的題目
正題
題目鏈接:https://www.luogu.com.cn/problem/U102380
題目大意
nnn個數,求一個數kkk使得max{aixork}max\{a_i\ xor\ k\}max{ai??xor?k}最小。
解題思路
我們對每一個數按位建到一個TrieTrieTrie里,然后對于每個節點。
codecodecode
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=1e5+10; int n,t[N*30][2],cnt,root; int insert(int val){int x=root;for(int i=29;i>=0;i--){int w=(val>>i)&1;if(!t[x][w]) t[x][w]=++cnt;x=t[x][w];} } int dfs(int x,int k){if(!t[x][0]&&!t[x][1]) return 0;if(!t[x][0]) return dfs(t[x][1],k-1);if(!t[x][1]) return dfs(t[x][0],k-1);return (min(dfs(t[x][0],k-1),dfs(t[x][1],k-1))|(1<<k)); } int main() {scanf("%d",&n);root=cnt=1;for(int i=1;i<=n;i++){int x;scanf("%d",&x);insert(x);}printf("%d",dfs(1,29)); }總結
以上是生活随笔為你收集整理的U102380-简单数据结构题【Trie】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jzoj3853-帮助Bsny【dp】
- 下一篇: 2014设计电脑配置清单(2014设计电