Grakn Forces 2020 - F. Two Different

問題リンク

これは勉強不足だった

解説

まずは nが2べきで表される時を考えましょう。

そうすると分割統治法のようなイメージで半分ごとにわけてそれぞれで1種類にしたあと、全体で1種類にすることは簡単でこれは O(n \log n)回でできます。

では2べきでないときは、スパーステーブルのイメージで n以下で最大の2べきの値を kとすると、 [0, k) [k, n)でそれぞれやれば、全体で2種類になります

提出コード

codeforces.com