きょうも亀だけど

機械学習やデータサイエンスの勉強記録など

AtCoder Beginner Contest 171, 172, 173参戦

ABC3つに参加した。

AtCoder Beginner Contest 171

A, B, C, Dの初の4完で終了。Cはアルゴリズムをググって見つけてしまった。DはTLEで苦しんだけど、怪しいところ見つけてギリギリでAC。

TLEからACに到達する際に以下の気付きがあった。 numbersという名前のリストに含まれる各数字の出現回数を算出する処理で、countを使うよりもループで1つずつ見ていく方が早かった。

# intで初期化するため0が返る
cnt = collections.defaultdict(int)
# numbersに含まれる各数字の出現回数を保持
# for i in set(numbers):
#     cnt[i] = numbers.count(i)

# numbers.count(i)だとTLE,以下のループだと時間内に収まる
for i in numbers:
    cnt[i] += 1

できるだけ関数で処理しようとしていたけど、状況によっては愚直に見ていった方がよいことが分かった。

github.com

AtCoder Beginner Contest 172

A, B,の2完で終了。C, DがTLE。Cはやりたいことがわかったけど実装できなかった。Dは確実にTLEだろうなあと思ったらやっぱりTLE。難易度的には緑レベルらしいけど、Cはいけたなあ。

github.com

AtCoder Beginner Contest 173

A, Bの2完で終了。bit全探索なのは分かったけど実装できなかった。難易度的には茶レベルらしい。実装力と実装速度の課題が見えてきた。そしてAでケアレスミスによる1ペナ食らってしまったのがかなりもったいなかった。

github.com

次のコンテストで9回目になり、レート補正がなくなる模様。ちょっと茶色も危ない感じになってきたから、A,Bは丁寧に解く。C以降は過去問で引き出しを増やす。