#38999: 範例測資對了,但是送出後NA(0%...)


unvientoligero@gmail.com (wind)

學校 : 不指定學校
編號 : 258842
來源 : [218.164.1.156]
最後登入時間 :
2024-11-23 20:10:40
m933. 3. 邏輯電路 -- 2024年1月APCS | From: [111.242.248.168] | 發表日期 : 2024-01-07 22:14

有人知道問題在哪裡嗎 (´-ι_-`)

python code:

from collections import deque, defaultdict

p, q, r, m = map(int, input().split())

inputs = list(map(int, input().split()))
trtp = input().split()
trreq = list(map(lambda x: 1 if x=='4' else 2, trtp))
trcon = [-1]*q
output = [-1]*r

lines = defaultdict(lambda: [])
for _ in range(m):
    tmp = tuple(map(int, input().split()))
    lines[tmp[0]-1].append(tmp[1]-1)

queue = deque( (j, 1, inputs[i]) for i in range(p) for j in lines[i])
ms = float('-inf')

while queue:
    target, step, val = queue.popleft()
    
    if p+q<=target:
        output[target-p-q] = val
        ms = max(ms, step-1)
    
    else:
        
        if trtp[target - p] == '4':
            for j in lines[target]:
                queue.append( (j, step+1, int(not val)) )
            
        else:
            trreq[target-p]-=1
            if trreq[target-p]:
                trcon[target-p] = (val, step)
            
            else:
                prev, pres = trcon[target-p]
                
                if trtp[target-p] == '1':
                    for j in lines[target]:
                        queue.append( (j, max(step, pres)+1, prev&val ) )
                
                elif trtp[target-p] == '2':
                    for j in lines[target]:
                        queue.append( (j, max(step, pres)+1, prev|val ) )
                        
                else:
                    for j in lines[target]:
                        queue.append( (j, max(step, pres)+1, prev^val ) )
                        
print(ms)
print(*output)

 

 

 

 
#39000: Re: 範例測資對了,但是送出後NA(0%...)


unvientoligero@gmail.com (wind)

學校 : 不指定學校
編號 : 258842
來源 : [218.164.1.156]
最後登入時間 :
2024-11-23 20:10:40
m933. 3. 邏輯電路 -- 2024年1月APCS | From: [111.242.248.168] | 發表日期 : 2024-01-07 22:20

有人知道問題在哪裡嗎 (´-ι_-`)

python code:

from collections import deque, defaultdict

p, q, r, m = map(int, input().split())

inputs = list(map(int, input().split()))
trtp = input().split()
trreq = list(map(lambda x: 1 if x=='4' else 2, trtp))
trcon = [-1]*q
output = [-1]*r

lines = defaultdict(lambda: [])
for _ in range(m):
    tmp = tuple(map(int, input().split()))
    lines[tmp[0]-1].append(tmp[1]-1)

queue = deque( (j, 1, inputs[i]) for i in range(p) for j in lines[i])
ms = float('-inf')

while queue:
    target, step, val = queue.popleft()
    
    if p+q<=target:
        output[target-p-q] = val
        ms = max(ms, step-1)
    
    else:
        
        if trtp[target - p] == '4':
            for j in lines[target]:
                queue.append( (j, step+1, int(not val)) )
            
        else:
            trreq[target-p]-=1
            if trreq[target-p]:
                trcon[target-p] = (val, step)
            
            else:
                prev, pres = trcon[target-p]
                
                if trtp[target-p] == '1':
                    for j in lines[target]:
                        queue.append( (j, max(step, pres)+1, prev&val ) )
                
                elif trtp[target-p] == '2':
                    for j in lines[target]:
                        queue.append( (j, max(step, pres)+1, prev|val ) )
                        
                else:
                    for j in lines[target]:
                        queue.append( (j, max(step, pres)+1, prev^val ) )
                        
print(ms)
print(*output)

 

 

 

恩..?突然又全部通過了...難道是改測資了嗎

 
ZeroJudge Forum