Area1のif(memo[i][j])スマートフォン用の表示で見るArea1のif(memo[i][j])解いた問題のソースコードと解説など。この広告は、90日以上更新していないブログに表示しています。POJ問題nxnの行列Aが与えられる。S=A+A^2+A^3+...+A^kを計算し、各要素をmで割ったあまりを求めよ。やりかた行列の累乗は繰り返し二乗でできるとしても単純にやったら確実にTLEする。うまく分割統治しつつメモ化しておくことで通すことができる。数列を左右に二分割する。A^3)という構造が左右に現れる。これを繰り返して、要素数が一つ(=E)になるまで分割してから統合していくことで計算ができる。分割後の要素数に対するメモ化を行うことで無駄な計算を省く。最初何度もTLEしたので、要素数が奇数の場合でも左右の分割数を同じにしてメモ化に引っかかりやすくしてみたり、行列の計算結果を戻り値で返さずにグローバル変数に入れて参照する、などしてようやく2100MS程度で通せた。0;}ここまで書いたが、蟻本によればという漸化式が成り立つのでもっと高速に計算できる。自分のコード(主に「ライブラリ」タグ)はパブリックドメインにします。ST@R!はてなブログをはじめよう!Area1さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。