Google Code Jam Japan 2011 予選
A
お互いのデッキをカット&シャッフル!運命のダイスロール!俺のターン!ドロー!
デッキを"連続したカードのブロック"のリストで表すことでカット操作列の前から処理ってしまった….みんな後ろからやってるみたいだしやっぱそっちのがカンタン.前からだと普通にリストがすごい肥大化する操作列が作れそうだなーと思ってはいて,ワンチャンLargeのコーナーケースにはそういうのが入ってるかも〜と懸念はしたけど,割とそうでもなかったみたいでこれでもパスしてた.緩着と言わざるを得ない.Haskell.
B
55億年先まで朝飲むコーヒーのスケジュールが必要なんて…ヘインさんマジ不老不死ぱないッス.
変形の区間スケジューリング?賞味期限が長く満足度が高い順に残数に注意しながら後ろからgreedyに予定を埋めていけばいい.後ろから埋めれば「後で消費すべきものを今消費してしまって,今消費すべきものが在庫って腐ってしまう」ことが無いのはすぐわかる.解法はカンタンだけど書くのが正直めんどくさいのであとまわした.C++.
C
A,Bに比べ急に問題から味気が抜けあなごるにも似た殺伐感が漂い始めた.
片方は1埋めになってればよいだろうなーと.このときどれかの1をもう片方に移したら,元の数字の評価値は必ず1減るけど,移されたほうの評価値は1上がるとは限らない.たぶん最大の1埋め値+その余りって分割で確定だと思うけどビビって一応調べてる.
あまりの殺伐感からついごるふしてしまった.162打で提出したけど上記理由によりもっと縮められるだろう.Haskell.
まとめ
難易度はたぶんC