AtCoder青色になりました
6/22に開催されたABC131で、ついにAtCoderで一つの目標としていた青色(R1600)を達成することができました!
AtCoder青というのは僕が競プロをはじめたときにとりあえずの目標として設定した場所だったのでとても満足しています。
青コーダーになりました!!!!! pic.twitter.com/QegtkAOknl
— すぎやん (@yuji9511_compro) 2019年6月22日
水色になった時期との違いとかに注目しつつ今まで何をやってきたかとかをまとめてみようと思います。
水色まで
水色までの話は半年ほど前に自分が水色になった時に記事を書いたのでもしよければ呼んでください。
ysugiyama.hatenablog.com
競プロ始めて1年のとき
どのくらいで青に入るのか全く検討がつかなかったため、いい節目だろうと思って記事を書きました。今回書くべきものも割とここですでに触れてしまっているかもしれません。
ysugiyama.hatenablog.com
青になるために何をしたか
青になるためにどんなことをしてきたかなーと考えたのですが、思ったより高得点帯の問題に挑むことはしませんでした。
AtCoderですでに埋めているのが500点程度までだったので、やろうと思えば600-700点の問題をたくさん解くことはできました。ただ、それよりは自分のできていないところとして400-500点の問題を解くのが遅いことが課題だと思ったのでそこを改善することにしました。
じゃあどうやって改善したかという話なんですが、これはコンテストに出続けることが解決してくれるだろうという安直な考えでやっていました。
実際、水色の後半では他のことが忙しくてコンテスト以外の精進をほとんどできていないような状況だったのですが、早解きが安定して0WAでACできるような確率が上がってきたためそれが青中盤のパフォーマンスを出すことに繋がったのではないかなと思ってます。
人によってはABC-Fの600点をじっくり解くことでパフォを得ることができる人もいると思いますが、僕はまだ考察力が不足している部分があるので500を早く解くことを命にコンテストに挑んでいました。
実装力と数学力
よく競プロerが「実装力と数学力どっちが強いか」みたいな話をしていますよね。僕は最近「実装力」の方があるのではないかと感じています。数学的な考察が得意ではないからという消極的な選択の部分もあるのですが、実装は比較的得意で苦にならないタイプだと思っています。
たぶんこの理由としては長らくアルバイトとかで競プロ以外の開発経験があるという部分だと思っていて、どう書いたら自分が混乱しにくいかとかの感覚が意識せずともあるのではないかなーと思っています。自分が書いたコードはマクロもそこまで多く使っておらず比較的読みやすいんじゃないかなと勝手に思っているのですが、もしジャッジしてくれる人がいたら僕のコードを読んでフィードバックいただけると嬉しいです。
実装の基本方針はtouristに従うといいかなと思っています。最低限書くのがラクになるマクロのみ使っているというイメージなのでC++erでAGCで人のコードを参考にするときはtouristがおすすめです。
一応僕のC++コードのベースを貼っておきます。これくらいが実装を速くする最低限のマクロかなーと今の所思っています。VSCodeのeasy-snippetという拡張機能でコマンド一つで貼り付けるようにしています。この拡張機能を使うことで一行ずつクォーテーションで囲って登録するみたいな虚無がなくなるのでおすすめです。
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> lpair; const ll MOD = 1e9 + 7; const ll INF = 1e18; #define rep(i,m,n) for(ll i = (m); i < (n); i++) #define rrep(i,m,n) for(ll i = (m); i >= (n); i--) #define print(x) cout << (x) << endl; #define printa(x,n) for(ll i = 0; i < n; i++){ cout << (x[i]) << " ";} cout<<endl; int main(){ cin.tie(0); ios::sync_with_stdio(false); }
数学力は...どうやってつければいいんですかね。数学が得意な人は800点程度の考察重くて実装一瞬問題をさらっと通したりしていてとても羨ましいのですが、その辺はこれから精進をしていくしかなさそうですね。
どの程度アピールしていいのか
現在M1なのでサマーインターンの選考など受けている段階なのですが、せっかく青になったのでアピールポイントとして積極的に出していきたいですよね。
ただ、あまり競プロばかり前に押し出すのも微妙だし、人によっては競プロのレート感覚を適切に捉えてくれない人もいそうなので難しそうだなーと思いました。
競プロやってれば実装のスピードとかバグを埋め込みにくい実装などが上手になっていく気がするので、その辺に競プロの知見が生きるよ!みたいな話し方をすると万人に受けるかもしれませんね。chokudaiさんも青については「8割以上のIT企業において、アルゴリズム力はカンストです。一部企業においては、少し持て余してしまうかもしれません。」とか言っているのである程度自信を持っていいのかもしれませんね。
chokudai.hatenablog.com
これからどうやってレートを上げていくか
今のところ全く見えていません。なんせ黄パフォをとったことが今まで1回しかなく、青パフォも最近になって1800↑が何回か取れるようになってきた程度です。このままの生活をしていくと一生青と水色を行ったり来たりするムーブをしてしまいそうです。
そろそろ本格的な精進を再開しないといけないと感じています。水色上位で完全に停滞したら精進を再開しようかなと思っていたのですが、思ったよりもうまくいくことが増えて精進せず青まで来てしまいました。さすがにここからは600-700点に挑む必要が出てくるため精進を進める必要がありそうです。
今の精進具合がこんな感じです。700を手をつけずに置いておいたので、これからここを中心に手をつけていけばさすがに実力は上がっていくのではないかと思っています。ただ、現時点だと700点問題をみても解説ACの割合がかなり多くなってしまいそうなのでどれくらいまで考えるか、みたいな部分の折り合いをこれから考えたいと思っています。
おわりに
どちらかというと今考えていることみたいな内容を中心に書いたので「このアルゴリズムをやった」みたいなことにはあまり触れませんでした。もし聞かれたら答えたいと思うので興味あれば聞いてください。水色のうちは青にすごい偉大さを感じていたのですが、いざなってみると周りに青上位や黄色がたくさんいるのをみて自分まだまだ弱いなと思ったので精進はもちろんこれからも続いていきます。黄色になるには明らかに今までとレベルの異なる精進をしないといけなさそうなのでこれから頑張っていこうと思います。とりあえずしばらくは青色になった自分の名前を見てニヤニヤしていようと思います。それでは。