結果
| 問題 |
No.2837 Flip Triomino
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-08-09 23:00:48 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 74 ms / 2,000 ms |
| コード長 | 1,502 bytes |
| コンパイル時間 | 418 ms |
| コンパイル使用メモリ | 82,560 KB |
| 実行使用メモリ | 67,072 KB |
| 最終ジャッジ日時 | 2024-08-09 23:00:52 |
| 合計ジャッジ時間 | 3,867 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 34 |
ソースコード
import sys
from itertools import permutations
from heapq import heappop,heappush
from collections import deque
import random
import bisect
input = lambda :sys.stdin.readline().rstrip()
mi = lambda :map(int,input().split())
li = lambda :list(mi())
def check(N,M):
domino = [[(0,0),(1,0),(2,0)],[(0,0),(0,1),(0,2)],[(0,0),(1,0),(1,1)],[(0,0),(0,1),(1,1)]]
base = []
for i in range(N):
for j in range(M):
for D in domino:
b = 0
for dx,dy in D:
if 0 <= i+dx < N and 0 <= j+dy < M:
b |= 1<<(M*(i+dx)+j+dy)
else:
break
else:
for e in base:
b = min(b,b^e)
if b!=0:
base.append(b)
return len(base)
mod = 998244353
def solve(N,M,S):
B_cnt = [0] * 3
F_cnt = [0] * 3
for i in range(N):
for j in range(M):
if S[i][j] == "?":
F_cnt[(i+j)%3] += 1
elif S[i][j] == "B":
B_cnt[(i+j)%3] ^= 1
res = 0
for p in range(2):
tmp = 1
for r in range(3):
if B_cnt[r]!=p and F_cnt[r] == 0:
tmp = 0
elif F_cnt[r]!=0:
tmp *= pow(2,F_cnt[r]-1,mod)
tmp %= mod
res += tmp
res %= mod
return res
N,M = mi()
S = [input() for i in range(N)]
print(solve(N,M,S))