AOJ0268 Kongo Type

問題リンク Kongo Type

  • 解法

入力値を16進数の1つの整数としてみて、ビットマスクを使って解きました。
(0.5)^n の浮動小数点は誤差なく正確に計算できるので、色々と心配しなくて大丈夫です。

余談
入力値が32ビットなので、楽をするためにInteger.parseInt(sc.next(), 16)を使おうと思ったら例外吐かれて死にました。"0x80000000"は2^31なのですが、Integer.MAX_VALUEを超えるのでint型に収まらないと解釈されるみたいです。Long.parseIntを使えば問題ないです。

  • ソース
続きを読む

AOJ0263 Beat Panel

問題リンク Beat Panel

  • 解法

DPで解きました。
dp[i][S]: iターン目終了時点のボタンの状態がSのときの最高得点
という表を埋めます。
ボタンの状態や押すボタンの状態、押した後のボタンの状態など全部ビット操作で書けば、コードがめっさスッキリしますね。

  • ソース
続きを読む