G - Minimum Xor Pair Query Editorial
			
			by 
kyopro_friends
			
		
		
		注:公式解説の方がスマートです。
黒板に書かれた数のmultisetをbinary trieで管理します。各ノードは、
- そのノード以下が何個の要素を持つか(以下、「サイズ」)
 - そのノード以下がもつ値のうちいずれか1つ
 
を持ちます。
答えの候補になるのは、左右の子のサイズがともに 1 のノードにおけるその 2 数の xor か、サイズ 2 以上の葉ノードが存在するときの 0 に限ります。そのような箇所は全体で O(N) 個です。また、trieに要素を1個追加/削除したとき、そのような箇所は高々1個増え、高々1個減ります。
よって、追加/削除のときに、答えの候補のmultisetを更新することで、全体で \(O(Q(\log Q+\log A))\) になります。
「左右の子のサイズがともに 1 のノード」「サイズ 2 以上の葉ノード」で見ているのはともに、ソートしたときに隣接する 2 数であることから、本質的には公式解説と同じです。
				posted:
				
				
				last update:
				
			
