#40849: 學程式沒多久 用自己的方法寫出來了 但速度明顯慢很多 請大佬指教


chinostibi@gmail.com (stop simping)

學校 : 不指定學校
編號 : 264813
來源 : [116.241.165.233]
最後登入時間 :
2024-06-15 23:05:00
m931. 1. 遊戲選角 -- 2024年1月APCS | From: [116.241.165.233] | 發表日期 : 2024-06-15 16:01

這邊是py程式碼~

character = int(input())
temp = float("-inf")
secondtemp = float("-inf")
tempatk = float("-inf")
tempdef = float("-inf")
secondatk = float("-inf")
seconddef = float("-inf")
for i in range(character):
    attack,defense = [int(i) for i in input().split()]
    if attack**2 + defense**2 > temp:
        secondtemp = temp
        secondatk = tempatk
        seconddef = tempdef

        temp = attack**2 + defense**2
        tempatk = attack
        tempdef = defense
    if attack**2 + defense**2 > secondtemp and attack**2 + defense**2 < temp:
        secondtemp = attack**2 + defense**2
        secondatk = attack
        seconddef = defense
print(secondatk,seconddef)
 
#40850: Re: 學程式沒多久 用自己的方法寫出來了 但速度明顯慢很多 請大佬指教


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [122.117.95.179]
最後登入時間 :
2024-12-10 14:43:54
m931. 1. 遊戲選角 -- 2024年1月APCS | From: [114.42.160.39] | 發表日期 : 2024-06-15 19:29

還好啦,
有些人是先塞到陣列排序。
遇到測資比較大時,你這也是個好方法。
你可以 _t = a**2 + d**2  避免重複計算。

 

 
#40855: Re: 學程式沒多久 用自己的方法寫出來了 但速度明顯慢很多 請大佬指教


chinostibi@gmail.com (stop simping)

學校 : 不指定學校
編號 : 264813
來源 : [116.241.165.233]
最後登入時間 :
2024-06-15 23:05:00
m931. 1. 遊戲選角 -- 2024年1月APCS | From: [116.241.165.233] | 發表日期 : 2024-06-15 23:23

還好啦,
有些人是先塞到陣列排序。
遇到測資比較大時,你這也是個好方法。
你可以 _t = a**2 + d**2  避免重複計算。

 


對耶 寫的時候怎麼沒有想到 這樣看起來清爽很多 謝謝

 
ZeroJudge Forum