Atcoderを始める人,Pythonで進めていきたい人向けにやったことをまとめていこうと思います.
目標
水色をまずは目指したいと思います!
アプリ開発や機械学習系の研究はしていますが,アルゴリズムあたりは苦手です...
開始時のステータスはM2,23歳です.
DockerでPython環境構築
特に高速に処理する必要はないので,Dockerで環境構築します.
今回作ったフォルダはGitHubに上げてます.
https://github.com/kami9811/atcoder_python_environment
参考にするところのリストアップ
会員登録と同時にコンペの準備をやりました(2022/9/22)
実際に終わったやつから[DONE]をつけていきます
環境のヒント
練習
- [DONE: 2022/9/23] https://atcoder.jp/contests/practice
普通に練習のB問題時間かかって笑ってしまった.
Python特化の練習部
- [DONE: 2022/9/24] https://techblog.finatext.com/lets-do-competitive-programming-with-python-9c8b834769f6
- https://qiita.com/ryusuke920/items/4a3bf6cd07d4df39c06e
AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ 関連
- [DONE: 2022/9/23] https://atcoder.jp/contests/abs
- https://qiita.com/drken/items/fd4e5e3630d0f5859067
- https://delta114514.hatenablog.jp/entry/2018/03/15/014555
意外と簡単だった10問.全探索とかでCは行けるのかって感じ.
アルゴリズム系の勉強
- https://algo-logic.info/how-to-think-cp/ (考え方のお話)
- https://algo-logic.info/competitive-programming-must/ (アルゴリズムのお話)
過去問(バチャコン)
-
https://kenkoooo.com/atcoder/#/table/
- 便利なリンク集に色々載ってる: https://atcoder.jp/posts/261
- https://qiita.com/e869120/items/eb50fdaece12be418faa
コンペの参加状況
進捗があり次第まとめていきます.
会員登録
やることの気分転換に始めました(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もちょっとつまみ食いして今日は寝ます.