#35182: ???


s11104220@school.saihs.edu.tw (施同學)

學校 : 臺北市立松山高級工農職業學校
編號 : 221254
來源 : [118.165.11.221]
最後登入時間 :
2024-02-04 16:09:17
i177. 小畫家 (Painter) -- TOI練習賽202204潛力組第1題 | From: [123.193.213.137] | 發表日期 : 2023-05-14 19:47

是有什麼特殊的演算法嗎 為什麼我會TLE?

from sys import stdin
from collections import deque
h,w,x,y,c=map(int,stdin.readline().split())
a=[list(map(int,stdin.readline().split())) for _ in range(h)]
tar=a[x-1][y-1]
p=[[0]*w for _ in range(h)]
tasks=deque([(x-1,y-1)])
p[x-1][y-1]=1
a[x-1][y-1]=c
while tasks:
    px,py=tasks.pop()
    p[px][py]=1
    for dx,dy in ((0,1),(0,-1),(1,0),(-1,0)):
        nx=px+dx
        ny=py+dy
        if h>nx>=0 and w>ny>=0 and p[nx][ny]==0 and a[nx][ny]==tar:
            a[nx][ny]=c
            tasks.append((nx,ny))
for i in range(h):
    print(*a[i])
 
#39275: Re: ???


hshua (hshua)

學校 : 新北市立林口高級中學
編號 : 52506
來源 : [163.20.185.250]
最後登入時間 :
2024-03-15 09:17:14
i177. 小畫家 (Painter) -- TOI練習賽202204潛力組第1題 | From: [125.228.147.181] | 發表日期 : 2024-01-31 11:28

是有什麼特殊的演算法嗎 為什麼我會TLE?

from sys import stdin
from collections import deque
h,w,x,y,c=map(int,stdin.readline().split())
a=[list(map(int,stdin.readline().split())) for _ in range(h)]
tar=a[x-1][y-1]
p=[[0]*w for _ in range(h)]
tasks=deque([(x-1,y-1)])
p[x-1][y-1]=1
a[x-1][y-1]=c
while tasks:
    px,py=tasks.pop()
    p[px][py]=1
    for dx,dy in ((0,1),(0,-1),(1,0),(-1,0)):
        nx=px+dx
        ny=py+dy
        if h>nx>=0 and w>ny>=0 and p[nx][ny]==0 and a[nx][ny]==tar:
            a[nx][ny]=c
            tasks.append((nx,ny))
for i in range(h):
    print(*a[i])

如果(Si, Sj)本來的顏色與Z相同, 就不需要做處理直接輸出結果並 return 0 即可。

 
ZeroJudge Forum