20210519
- AtCoder
- 競プロ典型 90問
- 005 Restricted Digits
- 小問題 2
- 昨日行列計算が遅いと書いたがそれだけじゃなかった
- ①累乗する行列が間違っていた
- 解説には「
dp[i][j]]
->dp[i+1][k]
の遷移が存在する場合に第行第列が1になる」とあるが、正確には「dp[i][j]
->dp[i+1][k]
の遷移が存在する場合に第行第列を+1する」だった - 思考停止よくない
- 解説には「
- ②forループは遅い、行列計算するならnumpy
- ③numpyはデフォでは初期化時の値にあった型が選ばれる
- 計算していく中でその型が引き継がれていくから、累乗など小さい値から始まって大きい値になる計算だと簡単にoverflowしてしまう
- 初期化時に
dtype="object"
で桁無限のPythonオブジェクト型を指定する - の行列同士の積の計算量は一般的には
- 小問題 3
- 思いつくわけないし、解説読んでもよくわからないし、実装もなんか通らない
- 小問題 2
- 005 Restricted Digits
- 競プロ典型 90問