n,t = map(int,input().split())
A = input()
S1,S2 = [0] * 200010,[0] * 200010
D = list(map(int,input().split()))
for i in range(n):
if A[i] == 'B':
S1[D[i]] += 1
S1[D[i] + t] -= 1
else:
S2[D[i]] += 1
S2[D[i] + t] -= 1
ans = 0
for i in range(1,200010):
S1[i] += S1[i - 1]
S2[i] += S2[i - 1]
if S1[i] and not S2[i]: ans += 1
print(ans)
入门级难点的小题。
使用差分,再将差分转化为原数组——每个时间段出现的彗星数即可。时间复杂度 O ( n ) O(n) O(n)。
错误原因在于高估了数据范围。
题目链接
原创不易,感谢支持!