0
2

More than 1 year has passed since last update.

Atcoder 始めました.やったことまとめ(Python)

Last updated at Posted at 2022-09-22

Atcoderを始める人,Pythonで進めていきたい人向けにやったことをまとめていこうと思います.

目標

水色をまずは目指したいと思います!
アプリ開発や機械学習系の研究はしていますが,アルゴリズムあたりは苦手です...
開始時のステータスはM2,23歳です.

DockerでPython環境構築

特に高速に処理する必要はないので,Dockerで環境構築します.
今回作ったフォルダはGitHubに上げてます.
https://github.com/kami9811/atcoder_python_environment

参考にするところのリストアップ

会員登録と同時にコンペの準備をやりました(2022/9/22)

実際に終わったやつから[DONE]をつけていきます

環境のヒント

練習

Python特化の練習部

AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ 関連

意外と簡単だった10問.全探索とかでCは行けるのかって感じ.

アルゴリズム系の勉強

過去問(バチャコン)

コンペの参加状況

進捗があり次第まとめていきます.

会員登録

やることの気分転換に始めました(2022/9/22)

2022/9/24(土曜) トヨタ

初参加予定... 初参加してきました!
事前学習はpractice, 精選10問, Python特化の練習部, アルゴリズムの初級(DFS含む)+Uniform-find tree みたいな感じです.

精選10問とか触った感じ,Cまではいけて,Dはワンチャン...とか思ってたんですけど
Cで大爆死でしたw
Cは木構造の単純パスをDFSで見つけるって問題でした.

死因としては主に大規模な木構造へのPythonの書き方を理解していないことでした.居残りでCを倒して気づいたんですけど,大規模木構造への解決策は
1. メモリアクセスの効率化
2. 再起回数の増加

という感じです.

「メモリアクセスの効率化」は上のPython特化記事にもありますが,Pythonのsetはハッシュメモリアクセスなので,

route = [a, b, c]  # list
if a in route:
  ...  # こっちより O(N)
route = {a, b, c}  # set
if a in route:
  ...  # こっちの方が早い O(1)

という感じで高速化ができるんですよね.

あとはDFS自体はアイディアにあったんですけど,Pythonの関数再起呼び出し回数の上限がデフォルトで1000回になっているのを知らなかったことが問題でした...

これは

sys.setrecursionlimit(400000)

と書くだけで再起回数上限のエラーは消せるので,知っておけばなんともない話でした.本番中はこいつのせいで無限にREが消えませんでした.

今回は知っておけばどうとでもなるところで詰まってしまったので,来週までにアルゴリズムだけじゃなく,Pythonで問題をいくつか解いておきます←超大事
Dもちょっとつまみ食いして今日は寝ます.

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2