AtCoder ProblemsのLongest Streakが1000になったのでそれについて書く

こんにちは。

abc050というIDでAtCoderをやっている者です。

東京工業大学修士1年もやっています。(もうすぐ修士2年になるけど)

ブログを書くのは初めてなので、間違いや改善点があったら教えて下さい。(誤字脱字、個人情報が漏れてる、文章が読みずらい、など)

 

 

AtCoder ProblemsのLongest Streakとは

既に知っているかもしれませんが、タイトルに出てきた用語の説明をしておきます。

AtCoderとは、競技プログラミングのコンテストを開催している日本最大の企業およびそのサービスのことです。

AtCoder Problemsとは、AtCoder上の問題が見やすく掲載されているサイトです。AtCoderのIDを入力すると、その人が今までにどの問題を解いたか、などの情報も見ることができます。

AtCoder ProblemsのStreakとは、AtCoder上の問題を何日連続で解いたかを表す値です。AtCoder ProblemsのUser Pageから確認できます。注意点として、既に解いたことのある問題を再度解いてもこの値は変動しません。

AtCoder ProblemsのLongest Streakとは、AtCoder ProblemsのStreakの最大値です。

 

 

ここでようやくタイトルに戻りますが、本日2020年3月16日に、AtCoder ProblemsのLongest Streakが1000になりました。

 

言い換えると、1000日間AtCoderの問題を被りなく解き続けた、ということになります。

何の根拠もありませんが、この記録はあと半年は抜かれない気がしています。

1000は十進法でキリがいいことに気づいたので、(需要はさておき)ブログを書くことにしました。

というわけで(?)、Streakを続けることの利点と欠点について感じたことを書き並べてみます。

 

Streakを続けることの利点

  • 問題を解く習慣がつく

最大の利点はこれだと思います。

僕は、AtCoderの問題を解くのは好きだけど、解こうという気になるまでに時間がかかる、という人間なのでStreakを続けることで解く問題量が増えて実力も上がったと確信しています。

競技プログラミングを始めてみたけど何をしよう…という人にも「とりあえず毎日問題を解く」のは良い目標なのではないでしょうか。

 

Streakを続けることの欠点

  • Streakを意識し過ぎて、1日に2問以上解ける時も1問づつ解いてしまう

おそらくこれが1番の欠点です。Streakを本気で最大化しようとすると、解けている問題が複数問あっても1日ずつ提出することになります。

これは1日2問以上コンスタントに解く人にとっては足枷となります。

一応、「普段は問題をバンバン解いて、1問も解いていない日だけStreakを気にする」ことができれば欠点にはなりません。

ちなみに僕はStreakを続けていなかったら平均1日1問未満しか解かないので、この欠点はあまり気になりませんでした。

また、この「提出を先延ばしにする」行為は意外と悪いことばかりではなく、「いざ提出したらWA」を防ぐために解法の正当性を証明するようになる、提出デバッグができないのでちゃんと考えて正確なコードを書くようになる、問題を脳内に入れている時間が長いので記憶に残る、といった利点もあったりします。

  • AtCoderの問題ばかり解いてしまう

AtCoderのStreakを伸ばそうとすると、他のコンテストサイトの問題を解く暇があったらAtCoderの問題を解こう、という考えになります。ICPCCodeforcesで結果を残したい人にとっては欠点になり得ます。(1日に2問以上解き続ける人にとっては関係ない話かもしれません)

ちなみに僕はAtCoder以外はあまり熱心でないので、この欠点は気になりませんでした。

 

たまに「Streakを意識すると自明埋め(自分にとって簡単な問題を解くこと)ばっかりしてしまう」という意見を見ますが、僕の考えだと、緊急時にStreakをつなぐために簡単な問題は残しておきたいので、普段は難しい問題を積極的に解く気がします。

 

Q&A的な何か

残りはよくある質問とそれに対する回答を書きます。

 

Q.結局Streakを伸ばすのはおすすめ?

次のような人にはおすすめです。

  • 指標がなければ問題を解くのが1日1問未満の人
  • Streakにとらわれ過ぎず、1日に複数問解くことができる人
  • 競技Longest Streakをやっている人

 

Q.Streak Rankingが全然上がらなくてつまらないんだけど、Streak切ってくれない?

Streakはあくまで自己満足であり、Rankingは(自力で順位を上げるのが不可能という意味で)不毛なので、あまり気にしない方がいいです。

まあ確かに、始めたのがちょっと早かったという理由だけでずっと1位にいるのも申し訳ないので、今から24時間は問題を解かないことにします。

 

Q.Streakとレートって相関あるの?

分かりませんが、客観的事実としてStreak 1000以上の人は全員、橙以上経験者です。

(これは冗談なので、黄以下でStreak 1000を達成する人がいたとしても負の感情は全く抱きません)

真面目なことを言うと、何もなくても平均で1日に何問も解くような人に関してはStreakとレートはあまり関係ない気もします。

1つ言えるのは、僕は特に「精進」をしたことがないけど、Streakを続けていたら橙まで到達できた、ということです。

 

Q.Streakを続けるのって精神的に辛くない?

僕は辛いと感じたことはありません。面白そうな問題ばかり解いてるのもありますが…

辛いと感じたら気軽にやめていいと思いますよ。

 

Q.俺はStreakに意味がないと思っているので、Streakをアピールされるとイライラするんだが?

そういう人がいることは理解しています。ブロックなりミュートなりして下さい。

ちなみに、僕は他の人の「Streak○○日達成しました!」というブログやツイートを見るのは好きです。

 

Q.俺はLongest Streak 15でレート4111だけど、君は?

Longest Streak 1000でレート2414です。

どなたか存じ上げませんが、1勝1敗で引き分けですね。

 

Q.好きな問題を教えて!

いくつか挙げると、

https://atcoder.jp/contests/dwacon2018-final/tasks/dwacon2018_final_d

https://atcoder.jp/contests/jsc2019-final/tasks/jsc2019_final_a

https://atcoder.jp/contests/agc032/tasks/agc032_d

https://atcoder.jp/contests/agc017/tasks/agc017_d

https://atcoder.jp/contests/arc070/tasks/arc070_d

です。

自力で解けたものは1つもありません。

 

Q.「好きな問題教えて!」なんて本当に聞かれたの?

聞かれていません。

僕自身が他の人がどんな問題が好きか気になるので、とりあえず自分から言ってみただけです。

 

こんなところでしょうか。

ここに書いたことは僕個人の(現在の)考えなので、「そこは違うよ」「こういう考えもあるよ」などの意見は大歓迎です。(反応するとは限りませんが)

 

終わり

終わりです。

最後に、AtCoder社とkenkooooさんに感謝!

 

せっかくブログを作ったし、他の記事も書いてみようかなぁ