ARC100F: Colorful Sequences

https://beta.atcoder.jp/contests/arc100/tasks/arc100_d

考えること多すぎ。

->とりまどうやって数え上げるか考える。
-->colorfulな列を考えて、そこにAが何個あるか?
-->i番目からAが始まる列がcolorfulな場合の数Fiを計算する?
-->まあ後者だろう。
->colorfulを数え上げる?not colorfulを数え上げる?
-->colorfulを数え上げるなら包除原理か。
--->でも煩雑そうだし、前M個の情報を完全に持っていないといけなさそう。
-->not colorfulは数えやすそう。
->とりまM=0の場合を考えてみる。
-->dp[i][j]:=iまで見た時前j個のelemが互いに異なる時の場合の数で行ける。
-->割とM > 0の時も応用できそう。
-->Aに同じelemがある時はdp[i][j]使ってiあたりO(1)で計算できる。
->全て違うelemの時が難しいんだろう。
-->K < M
-->全て違ったら、なんか数学的に嬉しそう。変な係数掛けてできる?
--->できないと思いました。結局コレが想定解。
-->じゃあ同じelemが出てくるまでKを伸ばしてあげれば良いのでは。
--->Kまで伸ばす
---->これはO(K^4)となり失敗。
--->本当に同じelemが出たところで切る。
---->そうするとなんか累積和が出てきてO(K^3)
---->実装大変。大学の1限まるまる使った。