生活随笔
收集整理的這篇文章主要介紹了
1018 锤子剪刀布 (20分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
輸入樣例:
10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J
輸出樣例:
5 3 2
2 3 5
B B
本題有幾個地方需要注意:
當甲乙沒有贏,怎么輸出,正確答案是都輸出B,這個在題目中找不出線索,有點坑;使用python超時,優化考慮的有三點,1??使用sys.stdin作為輸入,尤其是在大量輸入數據時;2??以空間換時間,使用一維或者多維list建立索引;3??將執行代碼放到函數中,至于為什么這樣可以提高效率,主要基于cpython的機制問題,大概是因為局部變量和全局變量存取效率不一樣;pta中python超市一般出現在用for循環輸入大量數據時,可以考慮上面的優化策略;pta這種在線題目的三板斧是:1??把題目需要的輸入輸出準確信息準確提煉,映射到合適的數據結構;2??保證樣例正確,把主流邏輯調通;3??自己設計一些和0、1相關的邊界數據,把邊界條件調通,什么數組越界、函參不匹配大概都在這一步;4??提交測試,根據返回信息再次調試,如果是錯誤問題那就需要檢查主邏輯和邊界條件,如果超時就使用上面的優化策略。
from collections
import defaultdict
import sysstat
= {'C B': -1,'C J': 1,'B C': 1,'B J': -1,'J C': -1,'J B': 1,'C C': 0,'B B': 0,'J J': 0}def comp(x
):return '' + str(x
[1]) + str(ord('z') - ord(x
[0]))if __name__
== '__main__':result
= defaultdict
(int)win_stat_0
= defaultdict
(int)win_stat_1
= defaultdict
(int)n
= eval(sys
.stdin
.readline
().strip
())for i
in range(n
):input_str
= sys
.stdin
.readline
().strip
()result
[stat
[input_str
]] += 1if stat
[input_str
] == 1:win_stat_0
[input_str
[0]] += 1elif stat
[input_str
] == -1:win_stat_1
[input_str
[2]] += 1print(result
[1], result
[0], result
[-1])print(result
[-1], result
[0], result
[1])if len(win_stat_0
) > 0:print(sorted(win_stat_0
.items
(), key
=comp
, reverse
=True)[0][0], end
='')else:print('B', end
='')print(' ', end
='')if len(win_stat_1
) > 0:print(sorted(win_stat_1
.items
(), key
=comp
, reverse
=True)[0][0])else:print('B')
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的1018 锤子剪刀布 (20分)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。