rxiveのブログ‐競プロとか数学とか日記とか

競技プログラミングとか数学とか日記

プログラミング経験ゼロの初心者が競プロを始めた話

 

 

f:id:rxive:20201114195359p:plain

 

 競プロを始めてもうすぐ半年、かつもうすぐ緑コーダー(予定)なので今のうちに記事を書きます。

1. rxiveって何者?

 こんにちはrxiveです。自分用のメモとして、そして競技プログラミング初心者の参考になればと思いブログを書き始めたので、ここで軽く自己紹介をしておきたいと思います。

 

  • 理系大学院生

 職業は学生です。理系の大学院生とはいっても情報系や機械系ではなく実験系の学生で、普段は研究室で引きこもりをしています。大学入試までの数学は一通り勉強したのである程度数学ができる人間に分類されると思います。

 

  • プログラミング経験ゼロ

 プログラミング経験はゼロです。嘘です。講義で少し触った程度で記憶に残っていませんでした。言語はわかりません。if文とfor文があることを知っている程度で全くの初心者でした。

 

  • 2020年5月に競プロを始める

 5月にatcoderに登録して競プロの世界に足を踏み入れました。

 

2. 競技プログラミングを始めたきっかけ

 長年「プログラミングをやってみたい、できたら楽しそう」と思っていました。しかし、「何を勉強していいかわからない」「プログラミング言語がたくさんあるけど選ぶ基準が分からない」と誰もがぶつかる壁に阻まれて行動できずにいました。

 2020年、新型コロナウイルスが流行しました。全国的に外出自粛、リモートワークの流れが生じて大学も閉鎖したため、私は暇を持て余していました。この時期に競技プログラミングatcoderの存在を知りました。パズルやゲーム要素があり、レートで努力が可視化されているため飽きずに続けられそうだったし、無料で始められるのでやめてしまっても損はしないと思ったのでなんとなく始めました。

 当初の目標としては(偏見ですがネット上で人権がありそうな)緑コーダーになることでした。数学の素養がないと厳しい(というか相当苦労する)という話をネットで見ましたが自分には当てはまらないと考えていました。

3.  茶コーダーになるまで

 プログラミングに関して完全に無知だったのでC++入門 AtCoder Programming Guide for beginners (APG4b)C++の勉強を始めました。大体第2章までしかやっていません。というよりも第3章以降が理解できませんでした。いつか理解できるといいと思っています。この時点で四則演算、文字列、if文、while文、for文、配列をなんとなく使えました。必要な時に参照できるようにメモ帳にコピペしたり、ページをブックマークしていました。コンテスト中はネット検索が認められているので助かります。

 

 以下を参考に問題を解いて練習した後、

qiita.com

Atcoder Biginner Contestに参加しました。ABCのA問題は解けて、B問題は解法が思いつくのにコードが書けない状態が続きました。

 単純に基礎ができていないと感じたので(今もできていませんが)夏休み期間に過去問を解きました。界隈で言うところのいわゆる"精進"もどきです(Atcoder Problemsを使いました)。Training のeasy100問を解き終わるころには安定してAB問題は解けるようになり、C問題も簡単なものなら解けるようになりました。ここでレートが大きく伸びて無事茶コーダーになりました。

4. 茶コーダーになってから

 時間が取れなくなったので精進もどきは停止中ですが、毎週末のABCには必ず参加しています。8月半ばにレートが600を超えてから3か月じわじわと700後半まで上がってきました。この間、累積和としゃくとり法という手法を知りました。

 緑コーダー射程圏内のときに一度、ARCにも参加して撃沈しています。後から落ち着いて考えればA問題は解けました。この時のマイナス分を取り戻すのに3回くらいかかりました。懲りたのでしばらくはABC相当のコンテストのみに参加します。

 

5. これから

 年内、できれば11月中に緑に上がって界隈恒例の色変記事を書きたいです。と言っても言うべきことはありませんが。

 典型アルゴリズムをはじめとした実力不足が感じられるので勉強します。以下の記事が大変参考になり、時間を作りつつ勉強していきたいと思います。

qiita.com

 あとは成長日記もかねてコンテストの感想や考えたことについてブログでまとめられたらいいなと思っています。 というかこれを目的にブログを始めたので今回の記事はおまけです。たまに雑談もするかもです。