#22580: TLE 如何提高執行速度?


getsulin@gmail.com (史萊姆)

學校 : 不指定學校
編號 : 84741
來源 : [210.68.224.131]
最後登入時間 :
2020-12-08 10:47:08
c421. pA 雲端列印 -- 104學年度全國資訊學科能力競賽 | From: [210.68.224.131] | 發表日期 : 2020-09-17 15:22

https://pastebin.com/K421Hquf

 

本來使用 sys 方式讀取測資,
但感覺沒什麼差別,
像類似這種要逐一讀取測資的題目,
是否 TLE 的關鍵都不是用什麼資料結構處理,
而主要是 for 迴圈造成的?

因為從串列, queue, heap 一直改,
感覺都沒差什麼,應該根本問題是在演算法窮舉就無法 AC,
想請問大家協助指導,
感謝!

 
#22581: Re:TLE 如何提高執行速度?


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [114.42.146.197]
最後登入時間 :
2024-05-03 16:06:58
c421. pA 雲端列印 -- 104學年度全國資訊學科能力競賽 | From: [36.233.32.80] | 發表日期 : 2020-09-17 15:52

"最多 500,000 個工作"

你要避免維護一個很長的陣列,這樣容易超時。

 

"整數可為{-2, -1, 0, 1, 2, ..., 10000}"

 

題目說 job <= 10000

 

可以開一個長度 10000 的陣列

裡面記錄著每個 job 的計數 ...

 

不妨試試 !!

 

 
#22583: Re:TLE 如何提高執行速度?


getsulin@gmail.com (史萊姆)

學校 : 不指定學校
編號 : 84741
來源 : [210.68.224.131]
最後登入時間 :
2020-12-08 10:47:08
c421. pA 雲端列印 -- 104學年度全國資訊學科能力競賽 | From: [210.68.224.131] | 發表日期 : 2020-09-17 16:58

"最多 500,000 個工作"

你要避免維護一個很長的陣列,這樣容易超時。

 

"整數可為{-2, -1, 0, 1, 2, ..., 10000}"

 

題目說 job <= 10000

 

可以開一個長度 10000 的陣列

裡面記錄著每個 job 的計數 ...

 

不妨試試 !!

 


https://pastebin.com/RUesBYqY

依照您的提示整體上做了修改,
分數是提升了一點QQ,
認識到有時候直接開個空間操作也不是什麼壞事www

但感覺跟您所想的開陣列的使用方向有些差距哈哈
因為我有注意到您提交答案的記憶體使用量多達 100MB+_+
可能之後再找時間看看有沒有相關題目有類似作法

感謝您的指導教學~謝謝!

 
#22585: Re:TLE 如何提高執行速度?


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [114.42.146.197]
最後登入時間 :
2024-05-03 16:06:58
c421. pA 雲端列印 -- 104學年度全國資訊學科能力競賽 | From: [36.233.32.80] | 發表日期 : 2020-09-17 17:17

我把 2018 年的 code 重新上傳一次,只有 96%

因為現在 server 的效能和 2018 年差很多。

我再改一下,應該還是能 AC

 

 

我覺得您這段,效能更該不會很好吧。

 

List2 = List.copy()

List2.reverse()

index = List2.index(next(filter(lambda x: x!=0, List2)))

 

 
ZeroJudge Forum