結果
| 問題 |
No.1725 [Cherry 3rd Tune D] 無言の言葉
|
| コンテスト | |
| ユーザー |
👑 Kazun
|
| 提出日時 | 2021-06-29 15:47:27 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,260 ms / 4,000 ms |
| コード長 | 1,309 bytes |
| コンパイル時間 | 265 ms |
| コンパイル使用メモリ | 82,036 KB |
| 実行使用メモリ | 120,204 KB |
| 最終ジャッジ日時 | 2024-10-07 08:43:15 |
| 合計ジャッジ時間 | 24,303 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 42 |
ソースコード
def H(C,N,K):
if K in Memo:
return Memo[K]
if K==0:
return 0
code=ord(C)-ord("a")
if N==1:
Memo[K]=X_cnt[code][K]
else:
if K<=Len[N-1]:
Memo[K]=H(C,N-1,K)
elif K<=Len[N-1]+Y_len:
Memo[K]=E[code][N-1]+Y_cnt[code][K-Len[N-1]]
else:
Memo[K]=2*E[code][N-1]+Y_cnt[code][Y_len]-H(C,N-1,2*Len[N-1]+Y_len-K)
return Memo[K]
def count(S):
M=[[0]*len(S) for _ in range(sigma)]
for i in range(sigma):
a=Z[i]
m=M[i]
for j in range(1,len(S)):
m[j]=m[j-1]+(1 if S[j]==a else 0)
return M
#=================================================
import sys
from string import ascii_lowercase as Z
input=sys.stdin.readline
write=sys.stdout.write
X="*"+input()[:-1]; X_len=len(X)-1
Y="*"+input()[:-1]; Y_len=len(Y)-1
Len=[0,X_len]
while Len[-1]<=pow(10,18):
Len.append(2*Len[-1]+Y_len)
sigma=len(Z)
X_cnt=count(X)
Y_cnt=count(Y)
N=len(Len)-1
E=[[0,X_cnt[a][-1]] for a in range(sigma)]
for a in range(sigma):
e=E[a]
y=Y_cnt[a][Y_len]
for _ in range(2,N+1):
e.append(2*e[-1]+y)
Q=int(input())
A=[0]*Q
for case in range(Q):
L,R,C=input().split()
L=int(L); R=int(R)
Memo={}
A[case]=H(C,N,R)-H(C,N,L-1)
write("\n".join(map(str,A)))
Kazun