動的計画法(Dynamic Programing)は、国内予選レベルではおそらく知らなくてもだいじょーぶです。しかし、4問以上を目指しているのなら、おさえておいた方がいいかもしれません。 というか、あまり上手く説明できないかも。 ここで言う動的計画法は、簡単に言うと、いつ計算しても同じになる値をどこかにとっておいて いつでも呼び出せるようにすることで、重複計算を避けようという考え方です。 私の経験から言わせてもらえば、次のような問題に適応することで効果的な場合が多いです。 ・元の問題を小さな部分問題に分割できる。 ・その部分問題の答えからもとの問題の答えを導ける。(小さいほうから順番に計算できる) ・一番小さな部分問題はすぐに解ける。 ・小さいほうの部分問題は何回も呼び出される。 ・状態数がそんなに大きくない。(大きくないの基準は問題による。) これについては後で述べるとして、例を見てみま