AT_abc272_f [ABC272F] Two Strings
Description
[problemUrl]: https://atcoder.jp/contests/abc272/tasks/abc272_f
長さ $ N $ の英小文字からなる文字列 $ S,T $ が与えられます。
文字列 $ X $ と整数 $ i $ に対し、$ f(X,i) $ を $ X $ に対して以下の操作を $ i $ 回行い得られる文字列とします。
- $ X $ の先頭の文字を削除し、同じ文字を $ X $ の末尾に挿入する。
$ 0\ \le\ i,j\ \le\ N-1 $ を満たす非負整数の組 $ (i,j) $ のうち、辞書順で $ f(S,i) $ が $ f(T,j) $ より小さいか同じであるものの個数を求めてください。
辞書順とは? 辞書順とは簡単に説明すると「単語が辞書に載っている順番」を意味します。より厳密な説明として、英小文字からなる相異なる文字列 $ S,\ T $ の大小を判定するアルゴリズムを以下に説明します。
以下では「 $ S $ の $ i $ 文字目の文字」を $ S_i $ のように表します。また、 $ S $ が $ T $ より辞書順で小さい場合は $ S\ \lt\ T $ 、大きい場合は $ S\ \gt\ T $ と表します。
1. $ S,\ T $ のうち長さが大きくない方の文字列の長さを $ L $ とします。$ i=1,2,\dots,L $ に対して $ S_i $ と $ T_i $ が一致するか調べます。
2. $ S_i\ \neq\ T_i $ である $ i $ が存在する場合、そのような $ i $ のうち最小のものを $ j $ とします。そして、$ S_j $ と $ T_j $ を比較して、$ S_j $ が $ T_j $ よりアルファベット順で小さい場合は $ S\ \lt\ T $ 、そうでない場合は $ S\ \gt\ T $ と決定して、アルゴリズムを終了します。
3. $ S_i\ \neq\ T_i $ である $ i $ が存在しない場合、$ S $ と $ T $ の長さを比較して、$ S $ が $ T $ より短い場合は $ S\ \lt\ T $ 、長い場合は $ S\ \gt\ T $ と決定して、アルゴリズムを終了します。
Input Format
N/A
Output Format
N/A
Explanation/Hint
### 制約
- $ 1\ \le\ N\ \le\ 2\ \times\ 10^5 $
- $ S,T $ は英小文字からなる長さ $ N $ の文字列
- $ N $ は整数
### Sample Explanation 1
条件を満たす $ (i,j) $ の組は $ (0,0),(0,2),(2,0),(2,2) $ の $ 4 $ 個があります。 $ (i,j)=(1,2) $ は、$ f(S,i)= $`dba`$ ,f(T,j)= $`bca` であるため条件を満たしません。