ABC117D - XXOR
問題
解法
2進数での各桁におけるは、各の中で桁が0である個数と1である個数の多い方をにかけることで求めることができる。
ここでネックとなるのが以下という条件だが、これは桁DPを考えれば良い。
つまり、上位の桁から、未満が確定している場合とと途中まで一致している場合に分けて処理するということである。
未満が確定している場合については愚直に遷移すれば良いが、と途中まで一致している場合については、の桁目が1のとき、の桁目を0にすれば未満が確定している場合へ遷移できることを考慮する必要がある。
計算量は、となる。
コード
Submission #11232446 - AtCoder Beginner Contest 117
感想
DPの考え方が浅かったためACできず、解説を見てしまった。
ただ、その戒めとして記事を書いたので、次回以降解けるようになっていることを願う。