CodeForces #289_Div2 : E. Pretty Song
問題
解法
与えられる文字列長をnと置く。
2重ループを回し全ての部分文字列を調べれば解が求まるが、nのとる値の範囲が
1<=n<=10^5と大きいため、 では間に合わない。
考察すると、各文字は最終的な解に対し独立してスコアが決まる事が分かる。
例えば、文字列xxxAxx のAの独立したスコアは以下のようになる。
この部分を効率良く求めたい。
これはの累積和Aと、さらにその累積和Bを事前に求めておくことで、
Bからで計算する事ができる。
よって全体の計算量はとなる。