#23115: Python SE錯誤


s911165@st.hchs.ntpc.edu.tw (HCHS 昶哥)

學校 : 恆毅中學國中部
編號 : 133975
來源 : [59.124.208.253]
最後登入時間 :
2021-12-07 19:57:25
f314. 3. 勇者修煉 -- 2020年10月APCS | From: [211.22.52.6] | 發表日期 : 2020-10-23 13:05

測試執行正常,但送出解答時一直顯示:

#0: 5% SE ()

無法讀取裁判機,請確認與裁判機加密鎖是否相符!Read timed out

請問這是我代碼問題還是ZeroJudge的bug?

PS: 之前做大會考競賽時也有一題報同一個錯誤

Source:

def converage(row):
    newRow = []
    curr = 0
    for cell in row:
        if cell >= 0:
            curr += cell
        else:
            newRow.extend([curr, cell])
            curr = 0
    if curr != 0: newRow.append(curr)
    return newRow

def solveForRow(row):
    row = list(filter(lambda x: x != 0, row))
    while True:
        newRow = converage(row)
        if row != newRow: row = newRow
        else: break
    while True:
        if row[0] < 0: row.pop(0)
        if row[-1] < 0: row.pop(-1)
        try:
            nega = row.index(list(filter(lambda x: x < 0, row))[0])
            row[nega] += row[nega + 1]
            row.pop(nega + 1)
            row = converage(row)
        except IndexError:
            return row[0]

m, n = map(int, input().split(" "))
level = []
for i in range(m):
    inp = input().strip()
    try:
        while True:
            inp.index("  ")
            inp = inp.replace("  ", " ")
    except ValueError:
        level.append(list(map(int, inp.split(" "))))
print(solveForRow(level[0]))
 
#23671: Re:Python SE錯誤


cake11298 (糕糕)

學校 : 高雄市立新興高級中學
編號 : 130265
來源 : [140.115.152.20]
最後登入時間 :
2023-12-12 02:06:37
f314. 3. 勇者修煉 -- 2020年10月APCS | From: [114.40.15.151] | 發表日期 : 2020-12-07 22:41

測試執行正常,但送出解答時一直顯示:

#0: 5% SE ()

無法讀取裁判機,請確認與裁判機加密鎖是否相符!Read timed out

請問這是我代碼問題還是ZeroJudge的bug?

PS: 之前做大會考競賽時也有一題報同一個錯誤

Source:

def converage(row):
    newRow = []
    curr = 0
    for cell in row:
        if cell >= 0:
            curr += cell
        else:
            newRow.extend([curr, cell])
            curr = 0
    if curr != 0: newRow.append(curr)
    return newRow

def solveForRow(row):
    row = list(filter(lambda x: x != 0, row))
    while True:
        newRow = converage(row)
        if row != newRow: row = newRow
        else: break
    while True:
        if row[0] < 0: row.pop(0)
        if row[-1] < 0: row.pop(-1)
        try:
            nega = row.index(list(filter(lambda x: x < 0, row))[0])
            row[nega] += row[nega + 1]
            row.pop(nega + 1)
            row = converage(row)
        except IndexError:
            return row[0]

m, n = map(int, input().split(" "))
level = []
for i in range(m):
    inp = input().strip()
    try:
        while True:
            inp.index("  ")
            inp = inp.replace("  ", " ")
    except ValueError:
        level.append(list(map(int, inp.split(" "))))
print(solveForRow(level[0]))

作者你好 Python SE就是TLE的意思了

你的程式碼幫你測試過 邏輯上是沒有問題的 但是loop太多 導致TLE

題目會把您的程式碼歸類在沒有跑出結果
第一筆範例測資就跑了17秒了 顯然測資不吃這套

建議您可以優化程式碼 再丟一次

解題報告那邊有Python的解法 是用動態規劃寫的 可以了解一下

https://programinn.blogspot.com/2020/10/f314-3-apcs-20201017.html

小弟只是Python苦手若有講錯 請鞭小力一點

 
#23672: Re:Python SE錯誤


cake11298 (糕糕)

學校 : 高雄市立新興高級中學
編號 : 130265
來源 : [140.115.152.20]
最後登入時間 :
2023-12-12 02:06:37
f314. 3. 勇者修煉 -- 2020年10月APCS | From: [114.40.15.151] | 發表日期 : 2020-12-07 22:41

測試執行正常,但送出解答時一直顯示:

#0: 5% SE ()

無法讀取裁判機,請確認與裁判機加密鎖是否相符!Read timed out

請問這是我代碼問題還是ZeroJudge的bug?

PS: 之前做大會考競賽時也有一題報同一個錯誤

Source:

def converage(row):
    newRow = []
    curr = 0
    for cell in row:
        if cell >= 0:
            curr += cell
        else:
            newRow.extend([curr, cell])
            curr = 0
    if curr != 0: newRow.append(curr)
    return newRow

def solveForRow(row):
    row = list(filter(lambda x: x != 0, row))
    while True:
        newRow = converage(row)
        if row != newRow: row = newRow
        else: break
    while True:
        if row[0] < 0: row.pop(0)
        if row[-1] < 0: row.pop(-1)
        try:
            nega = row.index(list(filter(lambda x: x < 0, row))[0])
            row[nega] += row[nega + 1]
            row.pop(nega + 1)
            row = converage(row)
        except IndexError:
            return row[0]

m, n = map(int, input().split(" "))
level = []
for i in range(m):
    inp = input().strip()
    try:
        while True:
            inp.index("  ")
            inp = inp.replace("  ", " ")
    except ValueError:
        level.append(list(map(int, inp.split(" "))))
print(solveForRow(level[0]))

作者你好 Python SE就是TLE的意思了

你的程式碼幫你測試過 邏輯上是沒有問題的 但是loop太多 導致TLE

題目會把您的程式碼歸類在沒有跑出結果
第一筆範例測資就跑了17秒了 顯然測資不吃這套

建議您可以優化程式碼 再丟一次

解題報告那邊有Python的解法 是用動態規劃寫的 可以了解一下

https://programinn.blogspot.com/2020/10/f314-3-apcs-20201017.html

小弟只是Python苦手若有講錯 請鞭小力一點

 
ZeroJudge Forum