競プロ月記 - 2023/04

もう 5 月の中旬ですが。

月記を書き始めて 3 か月が経ちました。
1 月の月記では競プロのモチベーションを高めるためにとりあえず月記を始めたことについて書き、
2 月の月記では競プロに時間を費やすことがほとんどできていないため今後はカレンダーにあらかじめ問題を復習する時間を作ることにより競プロに時間を費やすための仕組みを作ることにしたことについて書き、
3 月の月記では仕組みを作ったおかげで時間を費やしてけっこう復習ができたことについて書きました。

4 月も 3 月と同様カレンダーに予定を入れる方針でやっていたのですが、ほぼ競プロに触れることができませんでした。
原因は別の優先順位が高いことがあったときにカレンダーの予定を無視してそっちをやってしまったり、疲れて何も手がつかなくなってしまったりなど、、、
この作業をカレンダーにあらかじめ入れる仕組みがもしかしたら自分に合っていないのかも、それとも休息の取り方が下手なのかも、いろいろ思いますが、いずれにしても今は自分の中での競プロの優先順位がけっこう低いんだなあと感じます。
毎回のコンテストはほぼ出るようにしていますが、復習の時間が取れないんだったら無理に出る必要はないような気もしています。
でもコンテストに出るのをやめたらその間に周りの人たちに追い抜かれてしまいそうで怖いな。
復習してないんだったらそもそもコンテストに出る意味がないんだからコンテストに出続けてても一緒じゃない?
ていうかレートとか気にしないことにしたんじゃなかったっけ?

うーん、悩みますが、とりあえず、コンテストに出るというのをやめてみます。
しばらくやめてみて、またモチベーションが高くなってきたら出ることにしよう。
今日はコンテストがあると気づいたときに、「出ないよりは出るほうがマシ」くらいの理由で出るのは消極的すぎる気がする。
気持ちが高ぶるまで一旦おやすみ。
月記もしばらくおやすみですね。
でもコンテスト外で問題を解いたりアルゴリズムについて考えたりすることはありそう。あくまでも惰性で続けていることを一旦やめるという感じですかね。競プロについて発言したりしたときに「やめたんじゃないのか?」って言われるのが面倒臭そうなので保険のために書きました。
人が競プロをやめるとか続けるとかツイートしてるのを見るたびに知らんがなと思うのでこの記事もそう見られるんだろうな。でもブログって知らんがなを書くためのものだと思うので許してね。許すとか許さないとかないよ。
より楽しい ARC・AGC だけ出るという案もあるけど、中途半端になりそうなのでまとめて出ないことにしたほうが良いんだろうな。

競プロ月記 - 2023/03

毎月 1 か月間の競プロ活動を振り返る記事の 3 つ目です。
競プロ月記は

  • 競プロのモチベーションアップにする
  • 記録しておいたらもしかしたら後で何かの役に立つかもしれない
  • 何か記事を書く癖をつけたい

くらいのゆるいモチベーションでやっています。

前回の記事では、それまで競プロの問題を復習する習慣が自分になかったのでその対策として復習する時間をカレンダーに入れるという宣言をしたのですが、実際にそれを実行して見たらそのやり方が自分に合っているようで、あまりストレスなく復習をすることができました。
今後も続けていきます。

AtCoder のレート変化

1598 → 1614 (+16)

ほぼ現状維持。
苦手な ABC で青に復帰することができたのが嬉しかったです。
今は ARC でレートを上げて ABC で下げることが多いけど、ABC も「知識がないから解けなかったのかと思って解説を見てみたらそんなことはなくて諦めなければ解けたかもしれない問題だった」と思う回が多いので、そういうのをなくしていって ABC でも青パフォを安定してとれるようにしたいです。

この 1 か月で解けるようになった問題

どれも解けて嬉しい!

解きたかったけど解けなかった問題

- 解けそうな気はしていて数時間粘ったのですが WA も TLE も取れず。。。一旦諦めます。

- 解き直す前にうっかり解説を見てしまったのでまた来月に回します。解説を見た後の解き直しは 1 か月ほど空けるべきという考えです。

次の 1 か月で解けるようにしたい問題

- 公式解説の方法で解きたい。

- 大変そうだったけど時間をかければ解けるかな。

- これこそ諦めちゃった問題。思いついた解法では計算量的に無理だと思ったが計算量の計算をミスしてた。

次の 1 か月で解説を理解したい問題

- 別解を証明できるようにしたい。

- 知らない典型だったので理解する。

- これも理解しよう。

その他

AtCoder 公式のオンサイトに参加して楽しかったです!


強い人をたくさん見ることができて、黄色までレートを上げたいという気持ちになりました。
気持ちがあるうちにがんばりたいです。

おわり!
4 月最初のコンテストまでに書き終えられて安心。。。

競プロ月記 - 2023/02

月 1 回、今月の競プロ活動について振り返る競プロ月記の 2 回目です。
毎日何か書くのは大変だから月 1 回のペースで書くことにしようというのはよくある発想な気がしますが「月記」という言葉はぜんぜん使われてなくて、変換も大変ですね。
「日記」と書いて「日」を消して「月」を書き加えてます。

前回はコンテストごとに振り返ったのですが、今回からは問題ごとに振り返りたいなと思いました。
コンテストごとだと、うまくいったコンテストでの解けなかった問題について考える意識を低めたり、「どんな問題を選んだか」のようにまあ重要じゃないわけじゃないんだけど小手先のテクニックを反省することになったりしそうなので、問題ごとに振り返ることによって、アルゴリズムとか、問題を見てどういうことを考えるべきだったかとかを復習できたら良いなあと思いました。

2 月にレートを青から水色に落としたことによってレートへの執着がけっこうなくなりました。
「レートを上げたい!」より「解けない問題を解けるようにしたい!」のほうが考え方が健全な気がするのでレートを気にせず競プロを続けられたら良いなと思っています。

AtCoder のレート変化

1607 → 1598 (-9)
だから、この項目については深く考えない!
こんな項目ないほうが良い!

もともと解けなかったけど解けるようになった問題

なし。
精進をする習慣がないのですがこれについては対策を考えました。
後述します。

もともと解けなかったけど解けそうな問題

解説などを読んで解けそうになった問題です。
僕は解けなかった問題の解説を読んですぐに解き直すのはあまり勉強にならない気がしているので解説を読んだ問題は基本的に 1 か月くらい放置したいと思っています。
これらを 3 月の間に解けたら嬉しい!

まだ解けていないが解けるべき問題

解けている人の層からして自分が解けても良いと思うんだけどまだぜんぜんわかっていない問題です。
↑の「解けそうな問題」を全部片づけてから見たいです。

2 月の精進を振り返って

コンテストには基本的に出ているんですが競プロのモチベーションがそこまでなくて精進をする習慣がないです。
特に 2 月はほぼ全く精進してなかったと思います。
でもコンテスト中に解けなくてコンテスト後に「なるほど!」と思った問題はちゃんと AC しておきたいな、そうしないと成長することがなさそうだなと思っています。
3 月は 2 月に出会った「もともと解けなかったけど解けそうな問題」を出会った 1 か月後を目安に復習することにしたく、「やりたいな」と思うだけで終わらせたくないと思ったのでカレンダーに復習する予定をちゃんと立てることにしました。
はい、今立てました!
忙しくなって体調崩しそうだったらまた考えます。

あとはずっと皆勤で出ていた AHC に初めて参加しませんでした。
レートが絶対下がらないので出るデメリットはないと思っていたのですが、苦手であまり楽しめていないことを無理にやる必要はないかなあと思い。
いや、ちゃんと取り組んだら楽しいんでしょうけど。
AHC が得意な人は仕事もできる人が多いんだろうなあと思って、できる人が羨ましいです。
より楽しめているアルゴでもっと強くなれるようにがんばっていこうと思います!

その他やったこと

競プロはあんまりしていなかったのですが、こういうものを作りました。

普段は Web エンジニアとして働いているのですが、エンジニアっぽいことがぜんぜんできていないなあというコンプレックスを持っており、エンジニアっぽくなるためには何か作って発表することが良さそうだなと思い、比較的簡単にできる気がする Greasy Fork での拡張を作ろう!という思いで作りました。
題材はちょうど AtCoder を使っていて「こうしたら便利になりそうだな」というものを思いついていたので良かったです。
Javascript もあんまり書いたことがなくて書き始めるまでが大変だったのですが、社内に Greasy Fork に投稿した経験がある人がいたのでアドバイスをいただいて書くことができました。
ちょっと書けるようになったらあとはするする書けるようになって気持ちが良かったですが、その人にレビューをしてもらったらほぼすべてその人が書いたコードに書き変わってしまいました。
悔しいね。僕が書きましたみたいな顔をしてしまいすみません。
せっかくだから未経験から投稿するまでにやったことの記事を書きたいと思ってたけど時期を過ぎてしまったのでもう書くことはなさそう!残念!
ユーザースクリプトに対するハードルはかなり低くなったので、今後良いアイデアを思いついたら今度はできる限り自分で書いていきたいなと思っています!
アドバイスありがとう!
エンジニアとしてのコンプレックスなくしていきたいですね~~~。

競プロ月記 - 2023/01

競プロについての活動記録を毎月とってみようと思います。
これをやる理由は

  • 競プロのモチベーションアップにする
  • 記録しておいたらもしかしたら後で何かの役に立つかもしれない
  • 何か記事を書く癖をつけたい

という感じです。
もしかしたら今回しかやらないかもしれません。

この記事を書きながら数回前のコンテストについてけっこう覚えてないなと思ったので、当時思っていた感想とは異なるものもあるかもしれません。

AtCoder のレート変化

1658 → 1607 (-51)
レートが上がることの多い ARC にだけ Rated 参加したが、すべてレートが下がってしまった。
もう水色に落ちたくないなと思っていたけどさすがにそろそろ落ちそう。

AtCoder の各コンテストの振り返り

2023-01-07(土) AtCoder Beginner Contest 284

Unrated で参加。パフォーマンスは 1533。
E 問題までは早解きできたがその後の問題が解けず。

D - Happy New Year 2023 が面白かった。
E - Count Simple Paths は慣れない DFS を書いたけどなんとかあまり時間をかけずに解けた。

F - ABCBAC はパッと見で全く解法がわからなかったので自分の得意な ad hoc な問題だろうと思いがんばろうとしたが自分の知らない典型だったっぽい。
解説を読んで Z algorithm と rolling hash というアルゴリズムを自分が知らないことを知る。
Z algorithm は 【図解】線形時間の文字列アルゴリズム「Z algorithm」をイラストとアニメーションでかみ砕く - Qiita という記事で理解し、実装した。
おそらく正しいアルゴリズムで書けているがけっこう重く、過去の Z algorithm を求められている問題も TLE となり通すことができなかった。
rolling hash についてはすごく薄くどんなものかだけ理解した。
今のところ「ずるいもの」というような印象を持っているけど便利そうなので使えるようになりたい。
あと、Z algorithm や rolling hash がわかったところで今回の F 問題を解く方法はまだわかっていないのであとで考察したい。

G - Only Once は F 問題を諦めた後見に行って少し考察したが解けるまでには至らず。

2023-01-14(土) AtCoder Regular Contest 153

Rated で参加。パフォーマンスは 1286。レート変化は -32。
A 問題は解けたがその後の問題が解けず。
B 問題と C 問題どちらを解くか迷ったがどちらかと言うと解けそうで配点も高い C 問題を選んだら時間が間に合わなかった。

B - Grid Rotations は少し考えてみたがぜんぜんわからず、一旦保留することにした。
全体解説のヒント集を見てみたら、2 つのヒントがどちらも思いもしなかったような内容で、天才的な解法だと思った。
気づけば簡単な問題なので、半年後ぐらいにこの問題を忘れた頃に解きたい。
おそらくサンプルをもっと注意深く眺めていれば法則に気づけたと思うので保留する前にもっと考えれば良かった。
でも解けそうだと思った C 問題に移ったことは戦略的に間違ってなかったと思うので B 問題をもっと考えれば良かったという反省はあまりしていなくて、むしろ C 問題は残り時間では解ききれないということに気づけなかったことに反省している。

C - ± Increasing Sequence はほぼ解けると思ったのだが、実装が時間内に間に合わなかったり、通ると思ったケースで落ちたりした。
考察はできたと思っていたが何か足りなかったのかもしれない。
できたら解き直したいが、実装がしんどかったのであまり解き直したくない。

2023-01-15(日) AtCoder Beginner Contest 285

いつか書けたら書く。

2023-01-22(日) AtCoder Regular Contest 154

いつか書けたら書く。

2023-01-29(日) AtCoder Regular Contest 155

いつか書けたら書く。