python-竞赛技巧(赛氪OJ)

[题目描述]
在 ACM 竞赛中,当遇到有两个队伍(人) 解出相同的题目数量的时候,我们需要通过他们解决问题的总时间进行排序。
一共有 N 条时间被以时( Hours ), 分( Minutes ),秒( Seconds )的形式记录。
你必须要把他们按时,分,秒排序为升序,最少的时间最先。 考虑到如下的样例,这三个解出相同题目数量的时间为:
11:20:20
11:15:12
14:20:14
正确的排序结果应该是这样的:
11:15:12
11:20:20
14:20:14
输入格式:
输入共 n+1 行。
第 1 行,一个整数 N,表示一共有 N 条记录。
第 2 ~ n+1 行,每行 3 个整数,表示时,分,秒。
输出格式:
共 n 行,每行 3 个整数,表示排序完后的结果。
样例输入

11 20 20
11 15 12
14 20 14
样例输出
11 15 12 
11 20 20 
14 20 14
数据范围
对于 100% 的数据,保证 1≤Hours≤99,0≤Minutes≤59,0≤Seconds≤59。
来源/分类(难度系数:四星
排序 


完整代码展示:
n=int(input())
s1=[]
s2=[]
for i in range(n):
      x=list(map(int,input().split()))
      s1.append(x)
      sum=3600*x[0]+60*x[1]+x[2]
      s2.append(sum)
s2.sort()
for i in range(0,len(s2)):
      for j in range(0,len(s1)):
            if 3600*s1[j][0]+60*s1[j][1]+s1[j][2]==s2[i]:
                  print(s1[j][0],s1[j][1],s1[j][2])


代码解释:
n=int(input()) ”,让用户输入记录的数量n.
s1=[]
 s2=[]
 for i in range(n):
       x=list(map(int,input().split()))
       s1.append(x)
       sum=3600*x[0]+60*x[1]+x[2]
       s2.append(sum)                      ”
,建立两个空列表s1和s2,循环n次:让用户输入一串记录,并将其储存在列表x中,将x添加进s1中,将x中的记录转换为秒钟数后添加进s2中。
s2.sort()
 for i in range(0,len(s2)):
       for j in range(0,len(s1)):
             if 3600*s1[j][0]+60*s1[j][1]+s1[j][2]==s2[i]:
                  print(s1[j][0],s1[j][1],s1[j][2])
”,对s2中的元素进行升序排序,接着遍历s2,s1中元素,如果查找到s1中的元素所转换的数据与s2中的元素相同,则打印s1中的该元素。


运行效果展示:

348f61e2c1e249bfa11ed26ae080b00b.jpg

f80f40b8db3e46d18ce2f0d8c498c36b.jpg

               (声明:以上内容均为原创)

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪云-微星

感谢大家的支持与鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值