結果
問題 | No.2992 Range ABCD String Query |
ユーザー |
|
提出日時 | 2024-12-15 10:47:39 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 2,533 bytes |
コンパイル時間 | 599 ms |
コンパイル使用メモリ | 82,460 KB |
実行使用メモリ | 297,612 KB |
最終ジャッジ日時 | 2024-12-16 23:33:13 |
合計ジャッジ時間 | 148,400 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 36 TLE * 5 |
ソースコード
class SegTree:def __init__(self, op, e, lst):if type(lst) is int:self.n = lstelse:self.n = len(lst)self.N0 = 2 ** (self.n - 1).bit_length()self.op = opself.e = eself.data = [e] * (2 * self.N0)if type(lst) is list:for i in range(self.n):self.data[self.N0 + i] = lst[i]for i in range(self.N0 - 1, 0, -1):self.data[i] = self.op(self.data[2*i], self.data[2*i+1])def get(self, i):return self.data[self.N0+i]def update(self, i, x): #a_iの値をxに更新i += self.N0self.data[i] = xwhile i > 1:i >>= 1self.data[i] = self.op(self.data[2*i], self.data[2*i+1])def add(self, i, x):i += self.N0self.data[i] = self.op(x, self.data[i])while i > 1:i >>= 1self.data[i] = self.op(self.data[2*i], self.data[2*i+1])def set(self, i, x):i += self.N0self.data[i] = xwhile i > 1:i >>= 1self.data[i] = self.op(self.data[2*i], self.data[2*i+1])def prod(self, l, r):if r <= l:return self.elres = self.erres = self.el += self.N0r += self.N0while l < r:if l & 1:lres = self.op(lres, self.data[l])l += 1if r & 1:r -= 1rres = self.op(self.data[r], rres)l >>= 1r >>= 1return self.op(lres, rres)import sysinput = sys.stdin.readlineinf = 10**6size = 4N,Q = map(int, input().split())S = input()[:N]alp = {"A":0,"B":1,"C":2,"D":3}def make_matrix(c):x = alp[c]A = [inf]*16for i in range(4):for j in range(i,4):if i <= x <= j:A[i*size+j] = 0else:A[i*size+j] = 1return AD = []for i in range(N):D.append(make_matrix(S[i]))def op(X,Y):res = [inf]*16for i in range(4):for j in range(i,4):for k in range(i,j+1):res[i*size+j] = min(X[i*size+k]+Y[k*size+j], res[i*size+j])return rese = [0]*16st = SegTree(op, e, D)for _ in range(Q):t,x,c = input().split()if t == "1":x = int(x)-1st.set(x,make_matrix(c))else:l,r = int(x)-1,int(c)res = st.prod(l,r)print(min(res))