人工知能と競プロやってくブログ

深層学習・機械学習・AI・atcoder・競技プログラミングについて調べてやってみたことをまとめるブログです

AtCoder Beginner Contest 203(Sponsored by Panasonic)の問題[E - White Pawn](コンテスト参加者中 7.1%正解)をPythonで解く

コンテストでは出来なかった問題を復習してみます。

問題はこちら。
atcoder.jp

AtCoder Liveの解説聞けば実装方針は理解できる

youtu.be

チェス版でコマを動かした結果、どういう結果の組み合わせがあり得るか?という問題。

問題を読む限りは、盤面のテーブルを作ってDPで解く感じ?と思うが、盤面が無茶苦茶でかいのがあり得るから、コマに注目して処理していく実装方針。

書いたコード

AtCoder動画の兄さんの説明を元に、自分で実装してみたがACでず。
あきらめで、他の人のACコードを参考に実装したモノか次のコード。

AtCoderにて実行した結果は、
PyPy3(7.3.0) AC
Python3.8.2 AC

実装コードの参考元

コチラ。
atcoder.jp

まぁ、ほとんどこのまんまなんだけど。
setを使ったエレガントな実装で素晴らしい。
judgelawさん、ありがとうございます。

自分でスクラッチから実装したコードも方針はあってたんだろうけど

  • 到達不能な黒ポーンの除去
  • 黒ポーンのX座標が同じ値のときの考慮が機能してなかった
    が問題だったっぽいなー。

正解率計算

A問題回答者 8393
E問題正解者 596

596 / 8393 = 7.1%