https://beta.atcoder.jp/contests/dwacon5th-prelims/tasks/dwacon5th_prelims_c
文字列SおよびQ個の整数kが与えられる。Sに"DMC"という部分列(連続でなくてよい)がいくつあるか答えよ。ただし、DとCがk文字以上離れていてはならない。
Q\leq75個のクエリに答えるので、クエリ1つあたりO(|S|)で答えたい。
文字列を前から順に見て、Cが現れたとき、その位置からk-1文字前までに存在する"DM"の数を答えに足していけばよい。これをするためには、常に有効な"DM"の数を保持しておけばよくて、これは同様に範囲内のDとMの数を尺取法の要領で持っておくことで簡単にできる(範囲にMが入ってきたらDの数だけ増加し、範囲からDが出て行ったらMの数だけ減少する)。
直感でDPっぽさを感じるのもいいけど、固執しすぎないように。