01 trie板子

用于快速求出一个序列 其中两个值 的xor最大值

由于 从高位到低位 找与给定数 数位相反 的路径
所以底层逻辑是贪心,并且正确性显然

struct trie{
	int ch[maxn*31][2],idx;
	void insert(int x){
		int p=0;
		for(int i=31;i>=0;i--){
			int j= (x>>i)&1;
			if(!ch[p][j])ch[p][j]=++idx;
			p=ch[p][j];
		}
	}
	int query(int x){
		int p=0,res=0;
		for(int i=31;i>=0;i--){
			int j= (x>>i)&1;
			if(ch[p][!j]){
				res+= (1<<i);//累加边权 
				p=ch[p][!j];
			}else{
				p=ch[p][j];
			}
		}
		return res;
	}
};
posted @ 2025-03-13 19:31  Marinaco  阅读(20)  评论(0)    收藏  举报
//雪花飘落效果