生活随笔
收集整理的这篇文章主要介绍了
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分)的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。