tk555 diary

プログラミング、もしくはそれ以外のこと書きます。

ABC121-D

問題

atcoder.jp

提出

atcoder.jp

なんでこの問題1000人も通してんだよ...


O(1)で簡単にやろうとするとポイントは

  • n xor n = 0

を理解してf(A,B)をf(0,A-1) xor f(0,B)に分解して「xor 1 to n」でググるか(上の提出のやつ)

  • 2n xor (2n+1) = 1

を理解してAからB中に出現する1の数を数えるか(↓これ)

atcoder.jp


なんにせよxor分かってないと難しい。


bit毎に考えるO(logB)の方法でやろうとして85分溶かしたからこの方針はやめたほうがいい。(個人差あり)

教訓

  1. 分からなかったらググる柔軟性を持つべき