atcoder#ABC272F. [ABC272F] Two Strings

[ABC272F] Two Strings

题目描述

長さ N N の英小文字からなる文字列 S,T S,T が与えられます。

文字列 X X と整数 i i に対し、f(X,i) f(X,i) X X に対して以下の操作を i i 回行い得られる文字列とします。

  • X X の先頭の文字を削除し、同じ文字を X X の末尾に挿入する。

0  i,j  N1 0\ \le\ i,j\ \le\ N-1 を満たす非負整数の組 (i,j) (i,j) のうち、辞書順で f(S,i) f(S,i) f(T,j) f(T,j) より小さいか同じであるものの個数を求めてください。

辞書順とは? 辞書順とは簡単に説明すると「単語が辞書に載っている順番」を意味します。より厳密な説明として、英小文字からなる相異なる文字列 S, T S,\ T の大小を判定するアルゴリズムを以下に説明します。

以下では「 S S i i 文字目の文字」を Si S_i のように表します。また、 S S T T より辞書順で小さい場合は S < T S\ \lt\ T 、大きい場合は S > T S\ \gt\ T と表します。

  1. S, T S,\ T のうち長さが大きくない方の文字列の長さを L L とします。i=1,2,,L i=1,2,\dots,L に対して Si S_i Ti T_i が一致するか調べます。
  2. Si  Ti S_i\ \neq\ T_i である i i が存在する場合、そのような i i のうち最小のものを j j とします。そして、Sj S_j Tj T_j を比較して、Sj S_j Tj T_j よりアルファベット順で小さい場合は S < T S\ \lt\ T 、そうでない場合は S > T S\ \gt\ T と決定して、アルゴリズムを終了します。
  3. Si  Ti S_i\ \neq\ T_i である i i が存在しない場合、S S T T の長さを比較して、S S T T より短い場合は S < T S\ \lt\ T 、長い場合は S > T S\ \gt\ T と決定して、アルゴリズムを終了します。

输入格式

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

N N S S T T

输出格式

答えを出力せよ。

题目大意

定义 f(X,i)f(X,i) 表示把字符串 XX 的前 ii 个字母删除后整体拼接到 XX 的末尾形成的新字符串。比如令 X=sakiX=“saki”f(X,2)=kisaf(X,2)=“kisa”

空井咲有两个长为 nn 的字符串 SSTT,求满足 f(S,i)f(S,i) 的字典序小于等于 f(T,j)f(T,j) 的字典序 的 二元组 (i,j)(i,j) 对数。

要求 0i,jn10\le i,j\le n-1

数据满足 n2×105n\le 2 \times 10^5SSTT 均由小写字母组成。

3
adb
cab
4
10
wsiuhwijsl
pwqoketvun
56

提示

制約

  • 1  N  2 × 105 1\ \le\ N\ \le\ 2\ \times\ 10^5
  • S,T S,T は英小文字からなる長さ N N の文字列
  • N N は整数

Sample Explanation 1

条件を満たす (i,j) (i,j) の組は (0,0),(0,2),(2,0),(2,2) (0,0),(0,2),(2,0),(2,2) 4 4 個があります。 (i,j)=(1,2) (i,j)=(1,2) は、f(S,i)= f(S,i)= dba,f(T,j)= ,f(T,j)= bca であるため条件を満たしません。