atcoder#AGC015B. [AGC015B] Evilator

[AGC015B] Evilator

题目描述

すけぬ君は、N N 階建てのビルを建てました。ビルにはエレベーターが 1 1 基あり、すべての階に止まります。

すけぬ君は、各階に上下の方向ボタンを設置しましたが、うっかりしていたため、どの階にも上向きか下向きの片方のボタンしかありません。 そのため、どの階からも上か下のどちらかにしか進むことができません。 Si S_i U のとき i i 階には上向きのボタンしかなく、上にしか進めないことを、D のとき下向きのボタンしかなく、 下にしか進めないことを表します。

ある階から目的の階へと移動したい住民は、仕方がないので必要があれば他の階を経由して目的の階へと向かうことにしました。 全ての階の順序対 (i,j) (i,j) についての、i i 階から j j 階へ行くときのエレベーターに乗る回数の最小値の合計を求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

S1S2...SS S_1S_2...S_{|S|}

输出格式

全ての階の順序対 (i,j) (i,j) についての、i i 階から j j 階へ行くときのエレベーターに乗る回数の最小値の合計を出力せよ。

题目大意

给定一个长度为 n(n105)n(n≤10^5) 的字符串,每个字符为UUDD。第 ii 位上的字符表示,从第 ii 楼乘电梯出发只能向上(UU)或向下(DD)。

定义f(u,v)f(u,v)表示从第 uu 楼到第 vv 楼至少需要乘电梯的次数。

i=1njinf(i,j)\sum_{i=1}^n \sum_{j\ne i}^n f(i,j)

UUD
7
UUDUUDUD
77

提示

制約

  • 2  S  105 2\ ≦\ |S|\ ≦\ 10^5
  • Si S_i U または D である
  • S1 S_1 U である
  • SS S_{|S|} D である

Sample Explanation 1

1 1 階から 2 2 階までは、1 1 回エレベーターに乗れば行くことができます。 1 1 階から 3 3 階までは、1 1 回エレベーターに乗れば行くことができます。 2 2 階から 1 1 階までは、2 2 回エレベーターに乗れば行くことができます。 2 2 階から 3 3 階までは、1 1 回エレベーターに乗れば行くことができます。 3 3 階から 1 1 階までは、1 1 回エレベーターに乗れば行くことができます。 3 3 階から 2 2 階までは、1 1 回エレベーターに乗れば行くことができます。 これらの合計は 7 7 なので、7 7 を出力します。