2011-10-01から1日間の記事一覧

Google Code Jam Japan 2011 予選 C. ビット数

GCJ

ビット数動的計画法。下位の桁をNに一致させて、繰り上がりが無い場合とある場合の、f(a)+f(b)の最大値を覚えてく。もっと綺麗な方法がありそうな気がするが、この解法でもO(桁数)。 # coding: utf-8 def solve(N): M = 100 # [i][j] 下位i-1桁がNと一致し、…

Google Code Jam Japan 2011 予選 B. 最高のコーヒー

GCJ

最高のコーヒー後の日から順に、その日に飲むコーヒーを割り当てていくならば、一番満足度の高いコーヒーを貪欲に飲めば良い。飲むコーヒーが変わるのは、そのコーヒーが無くなるか、他のコーヒーが賞味期限前になった時なので、まとめて計算すると、Largeも…

Google Code Jam Japan 2011 予選 A. カードシャッフル

GCJ

カードシャッフル逆から計算する。例えば、サンプルの最後の例だと、[1 2 3 4 5] → [4 5 1 2 3] → [3 4 5 1 2] → [1 2 3 4 5]で、3回目のシャッフルの後で2番目にあるカードは、3回目のシャッフルの前には5番目に、2回目のシャッフルの前には4番目に、最初は…