# 半年間競プロをやってみた ---- ## 自己紹介 * 藤田 悦誌(@wotsushi) * インフラエンジニア@某SIer * 激辛料理が好き <img src="https://i.imgur.com/AYDytm8.png" width="400"> ---- ## 半年間競プロをやってよかったと感じたことを話します ---- ## 競プロとは 以下を競うプログラミングコンテスト * 複雑な処理を正しく記述する力 * 計算時間のかかる処理を数学的/情報科学的に高速化する力 <img src="https://i.imgur.com/8s9iO6E.png" width="300"> <img src="https://i.imgur.com/ETLEXdp.png" width="300"> ---- ## 問題例 * N体のモンスターがいます。それぞれ **体力** と **攻撃力** というパラメータを持っています * モンスター同士のバトルは1:1で行われ、以下の手順で勝敗が決まります 1. お互い同時に相手を攻撃する。相手の体力は自分の攻撃力分だけダウン 2. お互い体力0以下の場合、引き分け 3. 片方だけ体力0以下の場合、もう片方の勝利 4. お互い体力が0より大きい場合、1に戻る * 他のどのモンスターとバトルしても勝利できるモンスターがいれば、それを求めてください ---- ## 問題例の例 |モンスター|体力|攻撃力| |--|--|--| |ドラゴン|7|3| |スライム|9|2| |ゾンビ|2|5| ---- ## ドラゴン VS. スライム ターン0 |モンスター|体力|攻撃力| |--|--|--| |ドラゴン|7|3| |スライム|9|2| ---- ## ドラゴン VS. スライム ターン1 |モンスター|体力|攻撃力| |--|--|--| |ドラゴン|7->5|3| |スライム|9->6|2| ---- ## ドラゴン VS. スライム ターン2 |モンスター|体力|攻撃力| |--|--|--| |ドラゴン|5->3|3| |スライム|6->3|2| ---- ## ドラゴン VS. スライム ターン3 |モンスター|体力|攻撃力| |--|--|--| |ドラゴン|3->1|3| |スライム|3->0|2| ドラゴンの勝ち! ---- ## ドラゴン VS. ゾンビ ターン0 |モンスター|体力|攻撃力| |--|--|--| |ドラゴン|7|3| |ゾンビ|2|5| ---- ## ドラゴン VS. ゾンビ ターン1 |モンスター|体力|攻撃力| |--|--|--| |ドラゴン|7 -> 2|3| |ゾンビ|2 -> -1|5| ドラゴンの勝ち! ドラゴンはスライムにもゾンビにも勝てるので、 **答: ドラゴン** ---- ## どうやって解く? * 素直に総当たりする * バトル数は N (=モンスター数) の2乗に比例 * 例えば N が100万だと3時間くらいかかる... * 適当にトーナメントし、優勝者とその他全員とバトルさせる * トーナメントのバトル数はN未満 * 優勝者とその他とのバトル数もN未満 * 合計で2N未満のバトル数で答えを求められる * 例えば N が 100万でも5秒もかからない! ---- ## 競プロをやってよかったこと * 毎日コードを書くようになった * 強い人と知り合えた * 自信を持てるようになった ---- ## 毎日コードを書くようになった * 一問が小規模なので、気軽に取り組める * Streakを伸ばすのが楽しい <img src="https://i.imgur.com/ZUb8H8S.png" width="700"> ---- ## 強い人と知り合えた * 強い人の解法・思考過程・マインドを見るのは(競プロに限らず)勉強になる * 競プロerが集うイベントでCSにとても強い学生や社会人と話すのはいい刺激になる! ---- ## 自信を持てるようになった * レーティング上昇に応じて、自分の実装力を自信を持ってアピールできるようになった * 同時に、自分より強い人もまだまだいることが分かった <img src="https://i.imgur.com/UdOBJX7.png" width="500"> <img src="https://i.imgur.com/LGixpZQ.png" width="400"> ---- ## その他 * 競プロを通して新しい言語(Rust)に入門した * 競プロで新しい言語を習得するのはアリかも!? * 標準ライブラリの勉強になる * 週一回、会社の同僚と身内コンテストを開催して布教 * 朝練 * 頭の体操としてもいい感じ ---- ## まとめ * 競技プログラミングは面白い(とくに数学やパズル好きにオススメ) * コードを継続的に書くきっかけになる * 自分の強さを客観的に測れる ---- ## ご清聴ありがとうございました
{"metaMigratedAt":"2023-06-14T22:50:36.598Z","metaMigratedFrom":"Content","title":"半年間競プロをやってみた","breaks":true,"contributors":"[{\"id\":\"53bb30d8-ffb2-4e0d-8979-b22362dde7d9\",\"add\":2770,\"del\":525}]"}
    870 views