Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2-4-5.py がMLEエラーになります #6

Open
LittleWat opened this issue Sep 29, 2024 · 1 comment
Open

2-4-5.py がMLEエラーになります #6

LittleWat opened this issue Sep 29, 2024 · 1 comment

Comments

@LittleWat
Copy link

ソースコードのgithubでの公開ありがとうございます。

ご参考までに、2-4-5.py がそのままですと、MLEエラーになりました。

pythonを使っているため起きていると思いますが、ここのdpの行列の持ち方の縦横を反転させるとMLEエラーが解消されました

dp = [[0] * R for i in range(1 << R)]

pythonの内部構造がわかってないですが、pythonは縦に長い行列より、横に長い行列の方がメモリ使用量が少なくて済むということでしょうか... 🤔

@tsutaj
Copy link
Owner

tsutaj commented Sep 29, 2024

@LittleWat (Cc: @drken1215

ご報告ありがとうございます。
出版当時は PyPy で通っていたのですが、言語アップデートの影響で、同じコードでも今は AC できないようです。ご不便おかけして申し訳ありません。

pythonの内部構造がわかってないですが、pythonは縦に長い行列より、横に長い行列の方がメモリ使用量が少なくて済むということでしょうか... 🤔

これは PyPy がどういう最適化を施すかによるので、なんとも言えないところです・・・

私のほうで少し試してみたところ、インデックス変換用の関数を用意し、DP 配列を 1 次元にして書いても通るようです。(次元の入れ替えは必要ありませんでした)
提出:https://atcoder.jp/contests/tdpc/submissions/58277473

また、Garbage Collector を呼ぶのも有効なようです。こちらのほうが手軽かもしれません。
提出:https://atcoder.jp/contests/tdpc/submissions/58277742

古い問題では Memory Limit が厳しいことがあり、この問題もそのひとつです。
上記のようなややテクニカルな対処が必要であることをご容赦ください。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants