https://atcoder.jp/contests/abc147/submissions/13626753
https://atcoder.jp/contests/abc147/submissions/15303781
- 「集合nと集合mの片道は全部でn×m個」=「完全二部グラフ」=「辺の数はn×m個」
制約からが許されないので、ビット桁ごとに処理して計算量削減を目指す。XOR演算なのでとをビット毎に分解したとき、片方0で片方1なら加算される。よって、を決め打ちしてd桁目ビットが1、からまでのd桁目ビット0の個数がpだったとき、だけ加算されていく。からのd桁目ビット値の個数は累積和にすればになるので、最終的に計算量がになる。を決め打ちしてd桁目ビットが0のときも同様。
ただし、上記実装は面倒なので更に工夫したい。「集合nと集合mの片道本数」と「完全二部グラフの辺の本数」が同値なことに気づくことが出来れば、そもそもを決め打ちする必要がない。からにおけるd桁目のビット0の個数をp、ビット1の個数をq、とするとd桁目の合計はになる。計算量はになる。