どんな改善点があるかを思い出すためのリストです。細かい説明はしません。
- PyPy として提出する
- 逆に Python として提出する(再帰、文字列、タプルが多いコードで有効?)
-
input
をsys.stdin.readline
に置き換える -
in List
をin Set
に置き換える - 累乗の計算は
pow
を使う -
2**n
を1<<n
に置き換える -
while
をfor
に置き換える - リストの先頭に追加や削除を行いたい場合は
deque
を使う - リストの要素を一つずつ取り出すとき index を使ったアクセスを避ける
- 再帰関数を書くときは
sys.setrecursionlimit(<再帰上限>)
も書く -
heapq
に追加する要素はリストでなくタプルにする(ダイクストラとか) -
bisect
が遅いときは二分探索を書く - 二次元リストを作るとき外側のリストの方が小さくなるようにする
-
Counter+Counter
をCounter.update(Counter)
に置き換える
参考にした記事
https://www.kumilog.net/entry/python-speed-comp
https://qiita.com/Hironsan/items/68161ee16b1c9d7b25fb
https://qiita.com/c-yan/items/dbf2838cdd89864ef5ac
https://linus-mk.hatenablog.com/entry/python_competitive_programming_speed_up_1