1ヶ月、AtCoder をやってみた

AtCoder を1ヶ月やってみた記録です。
箇条書きでメモみたいな感じになっています。ごめんなさい。ぺこり。

#11月19日（月)
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">今年の競プロ忘年会は12月16日（日曜日）開催に決まりました！会場は弊社新設のカフェエリアですのでよろしくです。 Browsing: 競プロ忘年会 in 東京 2018 <a href="https://t.co/Y2Pcm0r1Hv">https://t.co/Y2Pcm0r1Hv</a></p>&mdash; いもす (@imos) <a href="https://twitter.com/imos/status/1064355058911825920?ref_src=twsrc%5Etfw">2018年11月19日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

- このツィートを見て、去年の競プロ忘年会で、AtCoder をやると言ったような記憶が甦る
- 使用する言語は、まったく使ったことがない Rust か、以前挫折した Scala か、とも思ったものの、Python もあまり使ってないので、Python とすることに
    - Python3 がインストールされていないマシンには brew から pyenv, python3 をインストール
- この時点で AtCoder の「予定されたコンテスト」を見たところ、今年の忘年会までに開催される ABC などの初心者向けのレーティング対象コンテストが掲載されておらず、絶望する
- とりあえず、[AtCoder Beginners Selection](https://beta.atcoder.jp/contests/abs) をやってみることにする
  - 2問ほど、1回で AC せず
        - [ABC 081 B](https://atcoder.jp/contests/abs/tasks/abc081_b) 最小値の上限を 30 （以上）とすべきところを 10 としてしまう
        - [ABC 049 C](https://atcoder.jp/contests/abs/tasks/arc065_a) `if b[i-l[j]] and s[i-l[j]+1:i+1]==p[j]:` とするつもりが、コーディングしているうちに1つ目の条件を入れ忘れる

#11月20日（火)
- まずは 300 点問題を少し練習することに
    - [ABC 113 C](https://atcoder.jp/contests/abc113/tasks/abc113_c) 
        - 最初の submit は、文字列の長さを間違った値でコードに埋め込んでいて RE
        - やり直して [AC](https://atcoder.jp/contests/abc113/submissions/3629092)
    - この日の練習は1問のみに終わる

#11月21日（水)
- 昨日解いた [ABC 113 C](https://atcoder.jp/contests/abc113/tasks/abc113_c) を辞書を使って[解き直してみる](https://atcoder.jp/contests/abc113/submissions/3634696)
    - Python の文字列、配列、辞書の基本的な使い方は確認できたつもり
- 300点問題の練習の続き
    - [ARC 103 A](https://atcoder.jp/contests/arc103/tasks/arc103_a) をやって [AC](https://atcoder.jp/contests/arc103/submissions/3635171)
    - [ARC 102 A](https://atcoder.jp/contests/arc102/tasks/arc102_a) 
        - 愚直に3重ループ書いて submit したところ [TLE](https://atcoder.jp/contests/arc102/submissions/3635461) に
        - 小一時間考えて [AC](https://atcoder.jp/contests/arc102/submissions/3635675)
        - 300点問題でも計算量を考えないとならないことがあることを知る

#11月22日（木)
- JOI の予選も近いことだし、JOI の予選問題もやさしい方から解いてみることにする [https://joi.goodbaton.com/?aoj_userid=sei1tani&atcoder_userid=sei1tani&year_begin=2007&year_end=2019&rival_aoj_userid=&rival_atcoder_userid=&con_yo=1&Batch=1&Communication=1&sort=level] 

#11月23日（金)・11月24日（土）
- 練習から遠ざかる

#11月25日（日）
- 久しぶりに休暇にして、朝から富士山を見に行く（こちらも練習不足）
![20181125-KCC-富士山.jpg](https://qiita-image-store.s3.amazonaws.com/0/31968/bd9657db-88a2-ab8a-6cb8-fc7d027bd547.jpeg)
- [第5回 ドワンゴからの挑戦状 予選](https://atcoder.jp/contests/dwacon5th-prelims) 
    - ABC からと思っていたけど、とりあえず参加することに
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">夕食中だったので家族の許しを得て、初めて AtCoder のコンテストに出ました。なんとか 200 点問題やれたものの、そこまででした。</p>&mdash; Seiichi Tani (@sei1tani) <a href="https://twitter.com/sei1tani/status/1066327231327166464?ref_src=twsrc%5Etfw">2018年11月24日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

    - まず、この日使った PC に、Python 3 が python3 というコマンド名でインストールされていて、それに気づくまで10分くらいかかる
    - その後も、ばたばたして、ようやく 20:45:11 に A が AC
    - B と C を眺めて、B が bit 演算必要そうだったので C に取り組む
        - C の解法は思いつかず
        - 残り 20 分で B に取り組み、終了後に submit するも TLE や WA

#11月26日（月）〜11月30日（金）
- この週は、忙しくて、練習できず

#12月1日（土）
- この週末は、出張で沖縄へ
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">南へ (@ Gate 62 in 大田区, 東京都) <a href="https://t.co/gt8JK3crnh">https://t.co/gt8JK3crnh</a> <a href="https://t.co/LJ2lIxphqz">pic.twitter.com/LJ2lIxphqz</a></p>&mdash; Seiichi Tani (@sei1tani) <a href="https://twitter.com/sei1tani/status/1068632974961332224?ref_src=twsrc%5Etfw">2018年12月1日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
- 先週の [第5回 ドワンゴからの挑戦状 予選](https://atcoder.jp/contests/dwacon5th-prelims) の [B 問題](https://beta.atcoder.jp/contests/dwacon5th-prelims/tasks/dwacon5th_prelims_b) 、飛行機の中で解いてみる
    - WiFi 使えない機材だったので、那覇空港に着いてから submit して [AC](https://atcoder.jp/contests/dwacon5th-prelims/submissions/3692151)
    - `itertools` 使ったので、午後に[使わないもの](https://atcoder.jp/contests/dwacon5th-prelims/submissions/3693174)を書いてみる
- AC して幸先良いと思ったら、ケーブル類を自宅に忘れていることに気づく
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">MacBook は充電できないものの稼働はするアダプターをコンビニで買って、お昼食べて、バスに乗車 (@ 国内線 到着ロビー in 那覇市, 沖縄県) <a href="https://t.co/xKLnL1C9or">https://t.co/xKLnL1C9or</a></p>&mdash; Seiichi Tani (@sei1tani) <a href="https://twitter.com/sei1tani/status/1068700969637171200?ref_src=twsrc%5Etfw">2018年12月1日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

#12月2日（日）
- 会議が14時過ぎに終わった、夕方のフライトまで時間があるので、首里城へ
![20181202-那覇-守礼門.jpg](https://qiita-image-store.s3.amazonaws.com/0/31968/8e7de777-1891-ca20-78de-fa52a995dd5f.jpeg)
- 那覇空港でオリオンビールを2杯も飲んでしまう
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">I&#39;m at Terminal 2 in 大田区, 東京都 <a href="https://t.co/pahwhWCOHf">https://t.co/pahwhWCOHf</a></p>&mdash; Seiichi Tani (@sei1tani) <a href="https://twitter.com/sei1tani/status/1069198200882585600?ref_src=twsrc%5Etfw">2018年12月2日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
- ないと思っていた ABC が21時から（実際は、出張前に気がついてました）
- 妻が車で迎えにきてくれたので、[ABC 114](https://atcoder.jp/contests/abc114) に車中で参加
    - A と B を AC
    - そのうち、家につく
    - C と D を読み、D は解法分かったつもりになったので D を先にやることに
        - 実装に手間取り、終了直前に submit
        - 75 = 5*5*3 だけ考えて、25 * 3 * 1 と 75 * 1 * 1 を忘れていて WA
        - 終了後に D を [AC](https://atcoder.jp/contests/abc114/submissions/3707873)

#12月3日（月）〜12月7日（金）
- この週も、忙しくて、練習できず（途中徹夜で原稿書いたりして、かなり、疲弊）

#12月8日（土）
- 急に熱海に行くことに（日帰り）
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">お通夜で、急遽。 (@ Atami Station in 熱海市, 静岡県) <a href="https://t.co/JPuJsbQV8h">https://t.co/JPuJsbQV8h</a> <a href="https://t.co/dUdRSxI1eL">pic.twitter.com/dUdRSxI1eL</a></p>&mdash; Seiichi Tani (@sei1tani) <a href="https://twitter.com/sei1tani/status/1071320301126995969?ref_src=twsrc%5Etfw">2018年12月8日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
- 通夜振る舞いでお酒をいただく
- なんとこの日も ABC が
- うちに戻ってから [ABC 115](https://atcoder.jp/contests/abc115) に参加
    - A, B を　AC
        - ただ、A は、出力文字列のコピーを失敗していたのに気づかず、2回 WA
    - C
        - 提出ソースのコピペに失敗して WA
        - ちゃんとコピペし直して submit したら REになったので、混乱して C 言語で書き直す
        - 実は A に投げていた（不注意）
        - 終了後に Python で[書き直す](https://atcoder.jp/contests/abc115/submissions/3749711)
    - D は、C の流れでそのまま C 言語で。
        - 時間内に通らず、終了後に AC
        - WA になった理由は、単純ミスと `long long` にすべきところが一部 `int` になっていたため
        - あとから Pythonで[書き直す](https://atcoder.jp/contests/abc115/submissions/3749242)
    - 提出先の確認や提出するソースコードコピペの確認という基本的なことができないことを認識

#12月9日（日）
- JOI 2018/2019 の予選に日だったので、JOI 予選のやさしい問題を再開
    - JOI 2006/2007 予選４ が、サンプル通るものの WA になり、理由が分からないままこの日はここまで

#12月10日（月）〜12月14日（金）
- この週も、忙しくて、練習できず

#12月15日（土）
- 研究室の忘年会
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">研究室の忘年会 (@ 居酒屋 きちんと 下高井戸 in 世田谷区, 東京都) <a href="https://t.co/MreQieFBGz">https://t.co/MreQieFBGz</a> <a href="https://t.co/vdG87Y4IeG">pic.twitter.com/vdG87Y4IeG</a></p>&mdash; Seiichi Tani (@sei1tani) <a href="https://twitter.com/sei1tani/status/1073903129589096448?ref_src=twsrc%5Etfw">2018年12月15日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
- AGC があるのが分かっていたけど、普通に飲酒してしまう
- 研究室のメンバーには申し訳ないが、忘年会は中座させてもらい [AGC 029](https://atcoder.jp/contests/agc029) に少し遅れて参加
    - A, B, C, D を一通り読んでみる
    - A もすぐに解法を思いつかなかったので、お風呂に入る
    - お風呂で落ち着いたら、A の解法がわかったので、[AC](https://atcoder.jp/contests/agc029/submissions/3797958)
    - B は最大マッチングかと思ったものの、今の実装力ではマッチングを実装できないことに気づく
    - C は解法気がついた気になり、実装に取りかかるも、時間内に実装終わらず
        - 終了後に submit したところ、WA と RE で間違ってました

#12月16日（日）
- 競プロ忘年会に少し参加し、楽しい時間を過ごす

#12月17日（月）〜12月20日（木）
- この週も、忙しくて、練習できず
- JOI 2006/2007 予選４だけはやり直したところ、問題文読み間違えだったことに気がつく

#12月21日（金）
- ソウルへ
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">I&#39;m at Gate 148 in 大田区, Tōkyō <a href="https://t.co/xivtfzXXk7">https://t.co/xivtfzXXk7</a> <a href="https://t.co/xcTxNuVhZD">pic.twitter.com/xcTxNuVhZD</a></p>&mdash; Seiichi Tani (@sei1tani) <a href="https://twitter.com/sei1tani/status/1075909910641238019?ref_src=twsrc%5Etfw">2018年12月21日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
- 高麗大学校情報大学の李先生と研究打合せ
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">College of Informatics の李先生を訪問して打合せ (@ Korea University in Seoul, โซล) <a href="https://t.co/9fzA8tJDGo">https://t.co/9fzA8tJDGo</a> <a href="https://t.co/mRZFM3eawI">pic.twitter.com/mRZFM3eawI</a></p>&mdash; Seiichi Tani (@sei1tani) <a href="https://twitter.com/sei1tani/status/1076019810809667587?ref_src=twsrc%5Etfw">2018年12月21日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

#12月22日（土）
- 高麗大学校人文大学でシンポジウム「大学における人文学と人文教育、その現実と方法の模索」に参加
    - 日本の情報教育の現状について報告
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">今日は朝から夕方まで、高麗大学校でシンポジウムでした (@ 고려대학교 문과대학 서관 / Korea University Liberal Arts in 서울특별시) <a href="https://t.co/FOU6ODEc3t">https://t.co/FOU6ODEc3t</a> <a href="https://t.co/Cgu3tep9uA">pic.twitter.com/Cgu3tep9uA</a></p>&mdash; Seiichi Tani (@sei1tani) <a href="https://twitter.com/sei1tani/status/1076492543406292992?ref_src=twsrc%5Etfw">2018年12月22日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
- 終了後、大学内の施設で、食事会
    - 北朝鮮製のどんぐりの蒸留酒（50度) をいただく
![20181223-どんぐり.jpg](https://qiita-image-store.s3.amazonaws.com/0/31968/ccd24843-1747-c1b6-2828-95ffd7e05229.jpeg)
- 21時から [CADDi 2018 for Beginners] (https://atcoder.jp/contests/caddi2018b) というコンテストが開催されるではないか！
    - A と B を AC
        - しかし、B は1回、A のソースを提出しまう（確認しないとならないというこれまでの教訓が活かせていない）
    - C は、解けたつもりが1つだけ WA になり、その原因を落ち着いて考えられない
    - あとから考えると、終了後も見当違いのことを考え続けていたらしい
    - 諦めてのお風呂に入ったら、探索する範囲が違っているのではということに気づき [AC](https://atcoder.jp/contests/caddi2018b/submissions/3852797)

#12月23日（日）
- 飛行機は午後なので、ホテル周辺を散歩
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ko" dir="ltr">I&#39;m at Geunjeongjeon in 서울특별시 <a href="https://t.co/NW5JiTCYlg">https://t.co/NW5JiTCYlg</a> <a href="https://t.co/GY6Hktatvs">pic.twitter.com/GY6Hktatvs</a></p>&mdash; Seiichi Tani (@sei1tani) <a href="https://twitter.com/sei1tani/status/1076629413410811904?ref_src=twsrc%5Etfw">2018年12月23日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">近現代の歴史博物館 (@ National Museum of Korean Contemporary History in 서울특별시) <a href="https://t.co/Fwdl0i49KD">https://t.co/Fwdl0i49KD</a> <a href="https://t.co/eZexWHTs9G">pic.twitter.com/eZexWHTs9G</a></p>&mdash; Seiichi Tani (@sei1tani) <a href="https://twitter.com/sei1tani/status/1076648811831930883?ref_src=twsrc%5Etfw">2018年12月23日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
- 夕方、ソウルから羽田へ
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">朝は授業日。東京に戻ります。 (@ Gate 37 in 서울특별시) <a href="https://t.co/wliX2PmKRN">https://t.co/wliX2PmKRN</a> <a href="https://t.co/EcToJ2OFmP">pic.twitter.com/EcToJ2OFmP</a></p>&mdash; Seiichi Tani (@sei1tani) <a href="https://twitter.com/sei1tani/status/1076733070768771073?ref_src=twsrc%5Etfw">2018年12月23日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
- 「第5回 ドワンゴからの挑戦状 本選（オープンコンテスト）は、WiFi サービスがない飛行機の中で参加できず

#12月24日（月）
- 授業日で、19時30分くらいまで研究室ミーティングだっため、「Xmas Contest 2018」には参加できず
- うちに帰って家族と夕食

#まとめ
- [1ヶ月で5回参加した結果](https://atcoder.jp/users/sei1tani)10級 色なし Rating:224
- Python に慣れたい
- 300点/400点問題を短い時間で確実に解けるように練習したい
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">ABCのBを5分くらいで解けるようになれば茶色にはなれるはず。タイピング遅い人は不利かも</p>&mdash; ぁ🍆🍡 (@akensho) <a href="https://twitter.com/akensho/status/1074461746960556032?ref_src=twsrc%5Etfw">2018年12月17日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
    - ということなで
    - この１ヶ月は、300点問題から練習するつもりが、まったく練習できていなかった
- コンテスト中の単純ミスは減らしたい
    - 問題を読み間違えない
    - 提出ミスをしない
    - お風呂に入らなくても落ち着きたい
- コンテストに参加する時間を確保するには、普段から色々と調整が必要
    - 家族の協力に感謝、研究室の皆さんにも感謝
    - 今回は運良く出張中にも参加できたけど、今後は出張の日程や移動スケジュールを調整したい
    - 今後は飲酒しないで参加できるように調整したい
- 少しでも練習をして、毎月１〜２回はコンテストに参加することを、あと11ヶ月は続けたい