【AtCoder】青色になりました。

過去の色変記事

 

takahero2016.hatenablog.com

 

takahero2016.hatenablog.com

 

Rating 変動

f:id:takahero2016:20210314012039p:plain

Rating 変動

AtCoder Problems

f:id:takahero2016:20210314012150p:plain

f:id:takahero2016:20210314012230p:plain

f:id:takahero2016:20210314012355p:plain

Rating History

f:id:takahero2016:20210314012524p:plain

振り返り

水色になってから緑パフォを出すことはなくなり、下振れはなくなったが、上振れもほぼなかった

使用言語を変更したり、学業を優先したりしたためか、青になるまでにはかなり時間を要した

まずは維持を目標に頑張っていきたい

各トピックに対して思うこと

問題埋め

やはりこれが一番重要だと思う

自分より後に始めて自分より強くなっている方々は、皆とてつもない量の問題を解いている

AtCoderだけではなく、CodeforcesやAOJ-ICPCなども解いた

問題を埋めるタイプの精進は、良くも悪くもそのレート帯で知っているべきことを身に付けているので、パフォーマンスにおいて上振れも下振れもしにくいと感じた

いろいろなサイトの問題を解くと、いつまでも簡単な問題ばかり解けてしまうので良くないと思った

バーチャルコンテスト

やりすぎると復習が追い付かないので昔に比べるとあまりやっていない

AtCoderと人権時間帯のCodeforcesのコンテストに全部出ることにして、普段はインプットすれば良いというのが今の立場

おそらく、レートが上がるにつれ、知識の応用や、短時間で詰めるなどコンテストに特化した差別化要素が大きくなるため、次第にバーチャルコンテストの重要性が上がってくるのだとは思う

まだ「知らないことを知る」だけでもレートが上げられるレベルにいると考えている

使用言語

C++に変更した

速度面で困る思いをしたくない、平衡二分探索木やACLを使いたい、CodeforcesやAOJの問題を解きたい、ICPCに出たい、強い人のコードを読みたい、などが理由

Streak

簡単すぎる問題を解いてもあまり得るものがないと思ったため、切った

意外とStreakを切ってもモチベーションは続いた

知見まとめ

取り組んだコンテストの記録や、アルゴリズムの解説および問題例をScrapboxにまとめた

タグや検索機能があるため、ノートに書くよりも後から参照しやすいと思う

LaTeXも書けてうれしい

チーム戦

自分が知らないことを知るきっかけになって良い

刺激にもなる

シンプルに複数人で問題を考えるという行為も楽しい

ライブラリ整備

ACLにあるものはそのままACLを使わせていただいている

ないものは多少自分で書いているが、他の人と比較しても大差ないと思う(むしろ少ないくらいか)

蟻本

蟻本に載っていることは難易度に関係なく典型になっているという事実があるため、もう少し優先度を上げても良いと思う

まだまだ全然読み切れていない(フローは未着手……)

地味に難易度順に書かれていないのが罠

解説AC

同レート帯の人と比較するとあまりしていないと思う

新たな何かを学ぶため、チーム練でチームメイトが解いたため、などの理由で解説ACすることは多いが、普段の問題埋めではあまり解説ACしていない

しかし、解けないので後で解こう→そのまま解かない というパターンも多いため、もう少し解説ACして良いと思っている

 

 

【AtCoder】Pythonで競技プログラミングをするときのTips

追記:2021/03/14に固定を外しました。

自分用メモです

テンプレ

import sys
readline = sys.stdin.readline
sys.setrecursionlimit(10**8)
mod = 10**9+7
#mod = 998244353
INF = 10**18
eps = 10**-7

入力

基本readlineで、文字列の時は改行文字が入ってしまうので.rstrip()する

import sys
readline = sys.stdin.readline

# 整数(1つ)
N = int(readline())
# 整数(複数)
x,y,z = map(int,readline().split())
# 整数(10^5)
A = list(map(int,readline().split()))
# 整数(1つだけ分ける)
x,*A = map(int,readline().split())
# 整数(1つを複数行)
A = [int(readline()) for _ in range(N)]
# 整数(複数を複数行)
A = [list(map(int,readline().split())) for _ in range(N)]

# 文字列(1つ)
S = readline().rstrip()
# 文字列(複数)
S = readline().rstrip().split()

defaultdict

from collections import defaultdict
d = defaultdict(int)                        # 初期値を0にした辞書
d = defaultdict(lambda: 0)                  # 同様
d = defaultdict(lambda: 1)                  # 初期値が1
d = defaultdict(lambda: defaultdict(int))   # 引数を2つ取る
d['key']['a'] += 3

配列

PyPyでの利用を想定

# 速い
[None] * N
[[None] * N for _ in range(N)]
# 遅い(Pythonはこっちのほうが速いこともある!?特に2次元のとき)
[None for _ in range(N)]
[[None for _ in range(N)] for _ in range(N)]

enumerate,zip

楽な分岐

N = 1
if N == 1:
    print(0)
    exit()

sort

if __name__ == '__main__':

Counter

math

deque

itertools

Priority Queue

二分探索

再帰関数

BFS

DFS

bit全探索

nCr mod

DP

Union Find

Warshall Floyd

Bellman Ford

Z-Algorithm

BIT

NumPy

Scipy

2021年の目標

もう12分の1終わってますが、去年書いてみて結構良かったので今年も書きます

配点も書きます

(去年より雑になっている気がする…)

競技プログラミング (30)

学業 (20)

  • (min(GPA, 4.0)-3.0)*20

これは頑張りすぎないという意志です(適当)

資格 (20)

基本/応用情報、統計検定、数学検定、TOEFL/TOEICなどを頑張りたい(フワッとしすぎだろ)

その他 (30)

本を読む(学術書だけでなく)

働く

運動する

創作/芸術活動をする

適度に外出する(引きこもらない!)