init
This commit is contained in:
commit
851751ea87
82 changed files with 2093 additions and 0 deletions
41
9D.py
Normal file
41
9D.py
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import sys
|
||||
|
||||
input_data = sys.stdin.read().split()
|
||||
s_len = int(input_data[0])
|
||||
t_len = int(input_data[1])
|
||||
k = int(input_data[2])
|
||||
S = input_data[3]
|
||||
T = input_data[4]
|
||||
|
||||
mask_S = {}
|
||||
for char in "ACGT":
|
||||
valid = [0] * s_len
|
||||
|
||||
last = -1000000
|
||||
for i in range(s_len):
|
||||
if S[i] == char:
|
||||
last = i
|
||||
if i - last <= k:
|
||||
valid[i] = 1
|
||||
|
||||
last = 1000000
|
||||
for i in range(s_len - 1, -1, -1):
|
||||
if S[i] == char:
|
||||
last = i
|
||||
if last - i <= k:
|
||||
valid[i] = 1
|
||||
|
||||
b = bytearray((s_len + 7) // 8)
|
||||
for i in range(s_len):
|
||||
if valid[i]:
|
||||
b[i // 8] |= (1 << (i % 8))
|
||||
|
||||
mask_S[char] = int.from_bytes(b, byteorder='little')
|
||||
|
||||
ans_mask = (1 << (s_len - t_len + 1)) - 1
|
||||
ans_mask &= mask_S[T[0]]
|
||||
|
||||
for j in range(1, t_len):
|
||||
ans_mask = (ans_mask << 1) & mask_S[T[j]]
|
||||
|
||||
print(ans_mask.bit_count())
|
||||
Loading…
Add table
Add a link
Reference in a new issue