아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

부분 문자열

시간 제한2초메모리 제한512 MB

요약
문자열 위의 구간 [l, r]이 한 번에 한 끝점만 움직이며 m번 변할 때, 지금까지 등장한 서로 다른 부분문자열의 개수를 구한다.
난이도

어려움10점 중 8점

유형
문자열, 정렬, 문자열 매칭, 구현
정답자
아직 제출이 없습니다

문제

길이 nn인 문자열 s=s1,s2,…,sns = s_1, s_2, \ldots, s_n과 mm개의 쿼리가 주어진다. 각 쿼리 qkq_k (1≤k≤m1 \le k \le m)는 "L++", "L--", "R++", "R--" 중 하나이며, kk번째 쿼리 qkq_k에 대해 l[k]l[k]와 r[k]r[k]를 다음과 같이 정의한다.

  • L++: l[k]=l[k−1]+1l[k] = l[k-1] + 1, r[k]=r[k−1]r[k] = r[k-1]
  • L--: l[k]=l[k−1]−1l[k] = l[k-1] - 1, r[k]=r[k−1]r[k] = r[k-1]
  • R++: l[k]=l[k−1]l[k] = l[k-1], r[k]=r[k−1]+1r[k] = r[k-1] + 1
  • R--: l[k]=l[k−1]l[k] = l[k-1], r[k]=r[k−1]−1r[k] = r[k-1] - 1

단, l[0]=r[0]=1l[0] = r[0] = 1이다.

이때 mm개의 부분 문자열 sl[k],sl[k]+1,…,sr[k]−1,sr[k]s_{l[k]}, s_{l[k]+1}, \ldots, s_{r[k]-1}, s_{r[k]} (1≤k≤m1 \le k \le m) 가운데 서로 다른 문자열이 몇 개인지 구하라.

입력

입력은 다음 형식으로 주어진다.

n m
s
q1
q2
…
qm

출력

문제의 답을 한 줄에 출력한다.

제한

  • 문자열 ss는 소문자 알파벳으로 이루어진다.
  • 1≤n≤3×1051 \le n \le 3 \times 10^5
  • 1≤m≤3×1051 \le m \le 3 \times 10^5
  • qkq_k (1≤k≤m1 \le k \le m)는 "L++", "L--", "R++", "R--" 중 하나이다.
  • 1≤l[k]≤r[k]≤n1 \le l[k] \le r[k] \le n (1≤k≤m1 \le k \le m)

예제3

  1. 예제 1

    입력
    5 4
    abcde
    R++
    R++
    L++
    L--
    
    예상 출력
    3
    
  2. 예제 2

    입력
    4 6
    abab
    R++
    L++
    R++
    L++
    R++
    L++
    
    예상 출력
    4
    
  3. 예제 3

    입력
    10 13
    aacacbabac
    R++
    R++
    L++
    R++
    R++
    L++
    L++
    R++
    R++
    L--
    L--
    R--
    R--
    
    예상 출력
    11