ACM-ICPC Japan Domestic Warm Up II

無事終了しました。
多くの皆様の御参加、ありがとうございました。

以下、簡単な解法やどうでもいい話などを。

Problem A: Sleeping Cats

原案・問題文の作成を担当しました。
元々は「メモリのallocとfreeのシミュレーション」という問題設定だったのですが、いざ問題文を書こうとした瞬間、頭の中にねこが現れてにゃーにゃー鳴き始めました。なので、急転直下ねこ問題に変更。
完成した後に、国内模擬予選にこの問題の上位互換(Problem D: 制限されたファイルシステム)が出てきたので焦りました。

解法

Ad-hoc, Simulation.
問題文のとおりに書くだけです。私はSTLのcountやfillなどを使ってみました。
A問題にしては若干面倒くさいです。

Problem B: Monster Factory

問題文の作成を担当しました。原案はnobです。
問題文を書きやすいように細かい条件などを勝手に変更したら、答えが一意に決まらなくなったりして焦りました。大変だった問題の一つです。
ストーリーなども付け加えてみた結果、食わせ物な問題文が出来上がりました。その割にプログラムはかなり簡潔で、国内予選のB問題っぽさが出せたと言えなくもないかもしれません。

解法

Ad-hoc.
push_downとpush_rightのどちらを実行するべきかは、中心にある文字を見ればわかります。

Problem C: Midnight Teatime

原案・問題文の作成を担当しました。
Tree+DPの問題を作ろうとしたら、どこでどう方向性を間違えたのか、結局去年の国内予選のC問題によく似たものが出来上がってしまいました。仕方ないので、問題文で誤魔化そうとがんばりました。

解法

Brute-force / DP.
DPやビット演算を知らなくても頑張れば解けるように、入力サイズは小さめに設定しています。どちらにしろ知ってる人はDPするだろうから構わないよね、と思ってました。実際ほとんどの人がDPしてたようです。

Problem D: Dr. Nakamura's Lab.

ノータッチ。なので、この問題だけコンテスト中に解いてみました。
(コンテナの位置)*(使ったパネル)*(現在地)をキーにしてsetに突っ込みながらDijkstra
ビット演算と論理演算を間違えてしばらく嵌ってましたが、どうにか解けました。

一回だけ、間違えてチームのアカウントで送ってしまいました。ごめんなさい> yuk, 後輩K

Problem E: Frisbee Dogs

原案・問題文・ジャッジデータのの作成を担当しました。
幾何 + シミュレーション。とはいえ、どちらも比較的易しめです。去年の国内予選のEぐらいの難易度でしょうか。
もう少し難しくしようかとも思ったのですが、Judge's Solutionを抜かりなく作れる自信がなかったのでやめました。

解法

Geometry, Simulatiuon.
連立方程式を立てて変形すると二次方程式に落ち着くので、解の公式に放り込めばフリスビーの取得時刻が求まります。

Problem F: Chocolate with Heart Marks

ノータッチ。ですがコンテスト前に解いておきました。

解法

Search / DP.
最小のブロックの枚数で1を繋ぐことが出来ればいいのですが、もちろん全探索は現実的ではありません。
少し考えれば、「全ての1ブロック」「(上または下)にも(右または左)にも1ブロックがあるような全ての0ブロック」を直線で繋いでいったものの中に答えがあることが分かります。MSTに似ていますが、この問題では0ブロックを含む必要はないので、シュタイナー木と呼ばれる問題になります。
この木を探索 + 枝狩りで求めるのが一つ目の想定解法です。

シュタイナー木はDPでも求められます。私はSpaghetti Sourceを参考にしながら、集合の生成をサボった嘘Dreyfus-Wagnerを実装しました。1ブロックの数を n とすると O(4^n * n^4) ぐらいにはなりましたが、n <= 6なので0.1秒以下で終わりました。


勝者

Rank ID Solved Time
1 wata 6 421
2 iwiwi 6 523
3 lyrically 6 532
4 laycurse 5 543
5 mirac 4 318

おめでとうございます!

その他諸々

  • 開始早々wataさんとiwiwiさんのデッドヒート。A, B, C全て数十秒差。熱すぎる。
  • 全問正解者は3人でした。拍手。
  • 実装系に偏った問題セットでした。国内予選対策ですから。
  • 会津大生は会津大のコンテストでは勝てないの法則。
  • 今日の問題セットは、Volume 10の1035 - 1040に追加されました。


重ね重ね、皆様の御参加ありがとうございました。