結果
| 問題 | No.2283 Prohibit Three Consecutive |
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2023-04-28 21:42:09 |
| 言語 | Python3 (3.14.3 + numpy 2.4.4 + scipy 1.17.1) |
| 結果 |
AC
|
| 実行時間 | 519 ms / 2,000 ms |
| コード長 | 1,190 bytes |
| 記録 | |
| コンパイル時間 | 352 ms |
| コンパイル使用メモリ | 20,696 KB |
| 実行使用メモリ | 61,552 KB |
| 最終ジャッジ日時 | 2026-05-12 14:51:14 |
| 合計ジャッジ時間 | 5,531 ms |
|
ジャッジサーバーID (参考情報) |
judge2_1 / judge3_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 13 |
ソースコード
import sys
input = sys.stdin.readline
T=int(input())
for tests in range(T):
N=int(input())
S=list(input().strip())
flag=1
T=S+S+S+S
flag=1
DP=[[0]*4 for i in range(4*N)]
# 00, 01, 10, 11
DP[0]=[1,1,1,1]
for i in range(1,4*N):
if T[i]=="?":
if DP[i-1][0]==1:
DP[i][1]=1
if DP[i-1][1]==1:
DP[i][2]=1
DP[i][3]=1
if DP[i-1][2]==1:
DP[i][0]=1
DP[i][1]=1
if DP[i-1][3]==1:
DP[i][2]=1
elif T[i]=="0":
if DP[i-1][1]==1:
DP[i][2]=1
if DP[i-1][2]==1:
DP[i][0]=1
if DP[i-1][3]==1:
DP[i][2]=1
elif T[i]=="1":
if DP[i-1][0]==1:
DP[i][1]=1
if DP[i-1][1]==1:
DP[i][3]=1
if DP[i-1][2]==1:
DP[i][1]=1
#print(i,DP)
if DP[i][0]==DP[i][1]==DP[i][2]==DP[i][3]==0:
flag=0
break
if flag==1:
print("Yes")
else:
print("No")
titia