Submission #24034186
Source Code Expand
import sys
import numpy as np
def main():
h, w = map(int, input().split())
s = np.array([[c == '.' for c in input()]
for _ in range(h)], dtype=np.bool8)
print(solve(s))
if __name__ == "__main__":
if sys.argv[-1] == 'ONLINE_JUDGE':
from numba.pycc import CC
def solve(s):
h, w = s.shape
mod = 10 ** 9 + 7
mask = (1 << (w + 1)) - 1
def collision(j, b):
return (j > 0 and b & 1
or j + 1 < w and (b >> (w - 2)) & 1
or (b >> (w - 1)) & 1
or j > 0 and (b >> w) & 1)
states = []
for i in range(w):
lis = [0]
for j in range(w + 1):
nex = []
t = (i + j - 1) % w
for k in lis:
nex.append(k << 1)
if not collision(t, k):
nex.append(k << 1 | 1)
lis = nex
states.append(lis)
indices = []
for st in states:
dic = {}
for i, b in enumerate(st):
dic[b] = i
indices.append(dic)
# indices = [{b: i for i, b in enumerate(st)} for st in states]
nexts = [[[indices[i - w + 1][st << 1 & mask],
indices[i - w + 1][(st << 1 | 1) & mask]
if not collision(i, st) else -1]
for st in states[i]] for i in range(w)]
dp = [0 for _ in states[0]]
dp[0] = 1
for i in range(h):
for j in range(w):
nex = [0 for _ in states[j - w + 1]]
for k, c in enumerate(dp):
for l in range(2):
nk = nexts[j][k][l]
if l == 0 or s[i][j] and nk != -1:
nex[nk] += c
if nex[nk] >= mod:
nex[nk] -= mod
dp = nex
res = 0
for i in dp:
res += i
return res % mod
cc = CC('my_module')
cc.export('solve', 'int64(boolean[:, :])')(solve)
cc.compile()
else:
from my_module import solve
main()
Submission Info
| Submission Time | |
|---|---|
| Task | 023 - Avoid War(★7) |
| User | riantkb |
| Language | Python (3.8.2) |
| Score | 7 |
| Code Size | 2427 Byte |
| Status | AC |
| Exec Time | 7611 ms |
| Memory | 597080 KiB |
Judge Result
| Set Name | Sample | Subtask 1 | Subtask 2 | Subtask 3 | Subtask 4 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 1 / 1 | 1 / 1 | 2 / 2 | 3 / 3 | ||||||||||
| Status |
|
|
|
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt |
| Subtask 1 | sample_01, sample_02, 01_01.txt, 01_02.txt, 01_03.txt, 01_04.txt, 01_05.txt, 01_06.txt, 01_07.txt, 01_08.txt, 01_09.txt, 01_10.txt |
| Subtask 2 | sample_01, sample_02, sample_03, 01_01.txt, 01_02.txt, 01_03.txt, 01_04.txt, 01_05.txt, 01_06.txt, 01_07.txt, 01_08.txt, 01_09.txt, 01_10.txt, 02_01.txt, 02_02.txt, 02_03.txt, 02_04.txt, 02_05.txt, 02_06.txt, 02_07.txt, 02_08.txt, 02_09.txt, 02_10.txt |
| Subtask 3 | sample_01, sample_02, sample_03, sample_04, 01_01.txt, 01_02.txt, 01_03.txt, 01_04.txt, 01_05.txt, 01_06.txt, 01_07.txt, 01_08.txt, 01_09.txt, 01_10.txt, 02_01.txt, 02_02.txt, 02_03.txt, 02_04.txt, 02_05.txt, 02_06.txt, 02_07.txt, 02_08.txt, 02_09.txt, 02_10.txt, 03_01.txt, 03_02.txt, 03_03.txt, 03_04.txt, 03_05.txt, 03_06.txt, 03_07.txt, 03_08.txt, 03_09.txt, 03_10.txt |
| Subtask 4 | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, 01_01.txt, 01_02.txt, 01_03.txt, 01_04.txt, 01_05.txt, 01_06.txt, 01_07.txt, 01_08.txt, 01_09.txt, 01_10.txt, 02_01.txt, 02_02.txt, 02_03.txt, 02_04.txt, 02_05.txt, 02_06.txt, 02_07.txt, 02_08.txt, 02_09.txt, 02_10.txt, 03_01.txt, 03_02.txt, 03_03.txt, 03_04.txt, 03_05.txt, 03_06.txt, 03_07.txt, 03_08.txt, 03_09.txt, 03_10.txt, 04_01.txt, 04_02.txt, 04_03.txt, 04_04.txt, 04_05.txt, 04_06.txt, 04_07.txt, 04_08.txt, 04_09.txt, 04_10.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 01_01.txt | AC | 119 ms | 27368 KiB |
| 01_02.txt | AC | 113 ms | 27080 KiB |
| 01_03.txt | AC | 114 ms | 27084 KiB |
| 01_04.txt | AC | 113 ms | 27152 KiB |
| 01_05.txt | AC | 114 ms | 27080 KiB |
| 01_06.txt | AC | 113 ms | 26976 KiB |
| 01_07.txt | AC | 116 ms | 27080 KiB |
| 01_08.txt | AC | 114 ms | 27204 KiB |
| 01_09.txt | AC | 116 ms | 26964 KiB |
| 01_10.txt | AC | 111 ms | 26968 KiB |
| 02_01.txt | AC | 117 ms | 27328 KiB |
| 02_02.txt | AC | 111 ms | 27404 KiB |
| 02_03.txt | AC | 112 ms | 27156 KiB |
| 02_04.txt | AC | 111 ms | 26892 KiB |
| 02_05.txt | AC | 115 ms | 27240 KiB |
| 02_06.txt | AC | 115 ms | 27228 KiB |
| 02_07.txt | AC | 112 ms | 26924 KiB |
| 02_08.txt | AC | 117 ms | 27536 KiB |
| 02_09.txt | AC | 115 ms | 27320 KiB |
| 02_10.txt | AC | 115 ms | 27452 KiB |
| 03_01.txt | AC | 116 ms | 26792 KiB |
| 03_02.txt | AC | 115 ms | 27884 KiB |
| 03_03.txt | AC | 129 ms | 31620 KiB |
| 03_04.txt | AC | 126 ms | 29476 KiB |
| 03_05.txt | AC | 115 ms | 27648 KiB |
| 03_06.txt | AC | 162 ms | 31584 KiB |
| 03_07.txt | AC | 244 ms | 40688 KiB |
| 03_08.txt | AC | 154 ms | 31756 KiB |
| 03_09.txt | AC | 251 ms | 40500 KiB |
| 03_10.txt | AC | 248 ms | 40736 KiB |
| 04_01.txt | AC | 114 ms | 27160 KiB |
| 04_02.txt | AC | 114 ms | 27548 KiB |
| 04_03.txt | AC | 824 ms | 148028 KiB |
| 04_04.txt | AC | 2633 ms | 592140 KiB |
| 04_05.txt | AC | 1984 ms | 242248 KiB |
| 04_06.txt | AC | 4248 ms | 411692 KiB |
| 04_07.txt | AC | 2705 ms | 242728 KiB |
| 04_08.txt | AC | 4371 ms | 411328 KiB |
| 04_09.txt | AC | 7560 ms | 596804 KiB |
| 04_10.txt | AC | 7611 ms | 597080 KiB |
| sample_01.txt | AC | 111 ms | 26756 KiB |
| sample_02.txt | AC | 114 ms | 26652 KiB |
| sample_03.txt | AC | 112 ms | 27036 KiB |
| sample_04.txt | AC | 249 ms | 40248 KiB |
| sample_05.txt | AC | 393 ms | 50488 KiB |