結果
| 問題 |
No.2761 Substitute and Search
|
| コンテスト | |
| ユーザー |
sasa8uyauya
|
| 提出日時 | 2025-02-08 12:33:11 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 3,985 ms / 4,000 ms |
| コード長 | 1,047 bytes |
| コンパイル時間 | 720 ms |
| コンパイル使用メモリ | 82,572 KB |
| 実行使用メモリ | 169,224 KB |
| 最終ジャッジ日時 | 2025-02-08 12:33:48 |
| 合計ジャッジ時間 | 37,361 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 |
ソースコード
class BIT:
def __init__(self,n,M):
self.s=n
self.d=[0]*n
self.m=M
return
def add(self,p,x):
p+=1
while p<=self.s:
self.d[p-1]+=x
self.d[p-1]%=self.m
p+=p&(-p)
return
def sum(self,p):
p+=1
a=0
while p>0:
a+=self.d[p-1]
a%=self.m
p-=p&(-p)
return a
n,l,q=map(int,input().split())
B=1234512345
M=(1<<61)-1
P=[1,B]
for i in range(2,l+1):
P+=[P[-1]*P[1]%M]
R=[1,pow(B,M-2,M)]
for i in range(2,l+1):
R+=[R[-1]*R[1]%M]
S=[]
H=[]
for i in range(n):
S+=[list(map(ord,list(input())))]
H+=[BIT(l,M)]
for j in range(l):
H[i].add(j,S[i][j]*P[j]%M)
for _ in range(q):
que=input().split()
if int(que[0])==1:
_,k,c,d=que
k=int(k)-1
c=ord(c)
d=ord(d)
for i in range(n):
if S[i][k]==c:
H[i].add(k,(-c+d)*P[k]%M)
S[i][k]=d
else:
_,t=que
t=list(t)
h=0
for i in range(len(t)):
h+=ord(t[i])*P[i]
h%=M
g=0
for i in range(n):
if H[i].sum(len(t)-1)==h:
g+=1
print(g)
sasa8uyauya