关于trie写法
查看原帖
关于trie写法
998639
The_Elation_Aha楼主2023/11/4 09:18

rt,我赛时这么写是错的:

ll trie[N][5],tot=0; //?
void insert(ll x){
	ll root=0; //?
	for(int i=24;i>=0;--i){
		ll xx=(x>>i)&1;
		if(!trie[root][xx]) trie[root][xx]=++tot;
		root=trie[root][xx];
	}
}
ll query(ll x){
	ll root=0; //?
	for(int i=24;i>=0;--i){
		ll xx=(x>>i)&1,nx=((n-1)>>i)&1;
		if(!nx){
			if(trie[root][xx^1]) return 0;
			root=trie[root][xx];
		}
		else root=trie[root][xx^1];
	}
	return 1;
}

但是把上面打问号的地方改成 =1 就对了?而且原来是输出的第二个数直接超出 nn 了,求解答为什么QAQ

2023/11/4 09:18
加载中...