Logo
(追記) (追記ここまで)

32235번 - MATKOR 문자열 만들기 서브태스크

시간 제한메모리 제한제출정답맞힌 사람정답 비율
3 초 1024 MB128872.727%

문제

재현이는 알파벳 대문자로만 이루어진 문자열 $S$를 하나 가지고 있다. 이 문자열 중 일부를 잘라 종우에게 선물을 주려고 한다. 종우는 선물 받은 문자열에 다음 과정을 통해 문자열을 MATKOR로 만들고 싶다.

  • 선물 받은 문자열이 $A=a_1a_2a_3\cdots a_M$라고 하자.
  • $a_1$부터 $a_M$까지 각 문자에 대해 아래 연산을 적용한다
    • 삭제 연산 : 문자열에서 해당 위치의 문자를 삭제한다.
    • 대체 연산 : 해당 위치의 알파벳을 다음 알파벳으로 바꾼다. 예를 들어 AB로, BC로 바꿀 수 있다. Z에는 이 연산을 적용할 수 없다.
    • 대체 연산의 경우 여러 번 적용할 수 있지만, 삭제 연산은 한 번만 적용할 수 있다.
    • 또한, 각 문자에 대해 최대 한 종류의 연산만 적용할 수 있다. 연산을 적용하지 않아도 된다.
  • 연산을 모두 적용한 뒤 문자열을 MATKOR로 만들어야 한다.

재현이는 문자열 $S=s_1s_2s_3\cdots s_{\lvert S\rvert}$의 일부를 잘라 종우에게 선물해주려 한다. 재현이는 아래 쿼리에 대한 답을 알고자 한다. 아래 쿼리에서 $i$와 $j$는 1ドル$ 이상 $\lvert S\rvert$이하의 정수, $c$는 대문자 알파벳이다.

  • 1ドル$ $i$ $c$: $s_i$를 $c$로 바꾼다.
  • 2ドル$ $i$ $j$: 재현이가 종우에게 $A=s_is_{i+1}\cdots s_j$를 선물했을 때, 종우가 이 문자열을 MATKOR로 만드는 방법의 수와 각 방법당 총 연산 횟수의 분산을 구한다. 문자별로 적용된 연산의 종류와 횟수가 같다면 같은 방법이다.

이때 분산이란, 가능한 모든 서로 다른 연산 방법에 대한, 연산 사용 횟수에서 연산 사용 횟수의 평균을 뺀 값의 제곱의 평균을 의미한다. 조금 더 엄밀하게 말하자면 모든 가능한 연산 방법의 집합을 $T,ドル 연산 방법 $P$에서 연산을 사용한 횟수를 $|P|$라고 할 때 분산은 다음과 같이 계산할 수 있다.

$$\frac{1}{\lvert T\rvert } \sum_{P \in T} \left(\lvert P\rvert- \frac{1}{\lvert T \rvert} \sum_{Q \in T} \lvert Q \rvert \right)^2$$

입력

첫 번째 줄에 대문자 알파벳으로 구성된 문자열 $S(6\le\lvert S\rvert\le 100,円 000)$가 주어진다.

두 번째 줄에 쿼리의 수 $Q(1\le Q\le 100,円 000)$가 주어진다.

세 번째 줄부터 $Q$줄에 걸쳐 다음 두 쿼리 중 하나가 주어진다. 쿼리 2ドル$는 적어도 한 번 이상 주어진다.

  • 1ドル$ $i$ $c$ (1ドル\le i \le\lvert S\rvert$; $c$는 대문자 알파벳)
  • 2ドル$ $i$ $j$ (1ドル\le i < i +5\le j \le\lvert S\rvert$)

출력

쿼리 2ドル$가 주어질 때마다 쿼리의 답인 방법의 수와 분산을 한 줄에 공백으로 구분하여 출력한다.

단, 답이 매우 커질 수 있으므로 10ドル^9+7$으로 나눈 나머지를 출력한다. 또한 해당 쿼리의 방법의 수를 10ドル^9+7$으로 나눈 나머지가 0ドル$이라면 분산은 출력하지 않는다.

기약 분수 $\frac{p}{q}(p\ge 0,q>0,\gcd(p,q) =1)$를 $M$으로 나눈 나머지는 $q^{-1}$가 $q\cdot q^{-1}\equiv 1\pmod M$을 만족하는 정수, 즉 $q$의 $M$에 대한 모듈로 곱셈 역원일 때, $p\cdot q^{-1}\pmod M$로 정의한다. 만약 정수일 경우 $q=q^{-1}=1$이므로 $p\pmod M$를 의미한다.

방법의 수를 10ドル^9+7$로 나눈 나머지가 0ドル$이 아니라면 분산이 정수 혹은 분모가 10ドル^9+7$의 배수가 아닌 유리수로 나타내어짐을 증명할 수 있다.

제한

서브태스크

번호배점제한
111

$Q=1$; 주어지는 쿼리는 2ドル$ 1ドル$ $\lvert S \rvert$

289

추가적인 제한 조건 없음

예제 입력 1

MATKOQR
5
2 1 7
1 6 N
2 1 7
2 1 6
2 2 7

예제 출력 1

2 250000002
3 888888898
1 0
0

첫 번째 쿼리에서 종우가 선물 받는 문자열은 $A=$MATKOQR이며 다음과 같이 두 가지 방법이 존재한다.

  • $a_6$에 삭제 연산을 수행, 총 연산 횟수는 1ドル$번
  • $a_6$에 대체 연산을 한 번 수행, $a_7$에 삭제 연산을 수행, 총 연산 횟수는 2ドル$번

따라서 방법의 수는 2ドル$이며, 연산 횟수의 평균이 $\frac{3}{2}$이므로, 분산은 $\frac{1}{2}\left( \left( 1-\frac{3}{2} \right)^2+\left( 2-\frac{3}{2} \right)^2 \right) =\frac{1}{4}$이다.

두 번째 쿼리에서 재현이가 가진 문자열이 $S=$MATKONR로 변경된다.

세 번째 쿼리에서 종우가 선물 받는 문자열은 $A=$MATKONR이며 다음과 같이 세 가지 방법이 존재한다.

  • $a_5$에 삭제 연산을 수행, $a_6$에 대체 연산을 한 번 수행, 총 연산 횟수는 2ドル$번
  • $a_6$에 삭제 연산을 수행, 총 연산 횟수는 1ドル$번
  • $a_6$에 대체 연산을 네 번 수행, $a_7$에 삭제 연산을 수행, 총 연산 횟수는 5ドル$번

따라서 방법의 수는 3ドル$이며, 연산 횟수의 평균이 $\frac{8}{3}$이므로, 분산은 $\frac{1}{3}\left( \left( 2-\frac{8}{3} \right)^2+\left( 1-\frac{8}{3} \right)^2+\left( 5-\frac{8}{3} \right)^2 \right) =\frac{26}{9}$이다.

네 번째 쿼리에서 종우가 선물 받는 문자열은 $A=$MATKON이며 다음과 같이 한 가지 방법이 존재한다.

  • $a_6$에 대체 연산을 네 번 수행, 총 연산 횟수는 4ドル$번

따라서 방법의 수는 1ドル$이며, 연산 횟수의 평균이 4ドル$이므로, 분산은 $\frac{1}{1}\left( 4-4 \right)^2=0$이다.

다섯 번째 쿼리에서 종우가 선물 받는 문자열은 $A=$ATKONR이며 어떤 연산을 해도 두 번째 문자를 A로 만들 수 없어 방법의 수는 0ドル$이다.

예제 입력 2

LMATKOR
4
2 2 7
2 1 7
1 1 K
2 1 7

예제 출력 2

1 0
2 250000002
2 1

예제 입력 3

BABCEFGH
5
2 1 6
2 2 7
2 1 8
1 2 B
2 1 8

예제 출력 3

1 0
0
15 755555568
0

힌트

출처

University > 고려대학교 > MatKor Cup > 제5회 고려대학교 MatKor Cup: 2024 Summer/Fall F번

채점 및 기타 정보

  • 예제는 채점하지 않는다.
(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /