Typical DP Contest I問題 : イウィ

問題. イウィ

'i'と'w'からなる文字列sが与えられる.sの連続する部分文字列"iwi"を取り除く操作を繰り返す.操作を行うことのできる回数の最大値を求めよ.

制約 1 \le \left|s\right| \le 300

解法. 区間DP

区間DPで解きます.解法は問題「ダルマ落とし」とほぼ同じです.異なるところは,「ダルマ落とし」では隣り合う2要素を取り除くという操作でしたが,この問題は隣り合う3要素となります.
区間を引数にとる関数を,
  f(i, j) := 部分文字列 [s_i, s_j] のときに取り除くことができる最大の文字数
として,下のソースコードのような漸化式をとり,部分文字列のサイズを小さい方から計算します.このとき, f(1, n) は取り除くことができる最大の文字数なので,答えの最大の操作回数は  f(1, n) を3で割った値となります.

計算時間 O(\left| s \right|^3)

まとめ

区間DPは典型DPらしい.