输入样例:
14 60 80
10000001 64 90
10000002 90 60
10000011 85 80
10000003 85 80
10000004 80 85
10000005 82 77
10000006 83 76
10000007 90 78
10000008 75 79
10000009 59 90
10000010 88 45
10000012 80 100
10000013 90 99
10000014 66 60
输出样例:
12
10000013 90 99
10000012 80 100
10000003 85 80
10000011 85 80
10000004 80 85
10000007 90 78
10000006 83 76
10000005 82 77
10000002 90 60
10000014 66 60
10000008 75 79
10000001 64 90
优化
- 这个题目的核心问题是二维数据的多级排序问题,而python自带的排序算法可以实现这个功能,代码如下,看起来简洁漂亮,答案没有问题,运行时间出现超时。
# -*- coding: utf-8 -*-
from collections import defaultdict
from operator import itemgetterdef class_rules(m, n, L, H):if m >= H and n >= H:return 0elif m >= H and n >= L:return 1elif m >= L and n >= L and m >= n:return 2elif m >= L and n >= L:return 3else:return 4if __name__ == '__main__':nums = list(map(eval, (input().split())))students = defaultdict(list)total = 0for i in range(nums[0]):stu = list(map(eval, (input().split())))stu[0] = -stu[0]stu.append(stu[1] + stu[2])c = class_rules(stu[1], stu[2], nums[1], nums[2])students[c].append(stu)if c in range(4):total += 1print(total)for i in range(4):students[i].sort(key=itemgetter(3, 1, 0), reverse=True)for stu in students[i]:print('%s %s %s' % (-stu[0], stu[1], stu[2]))
- 具体优化办法https://blog.csdn.net/letv0907/article/details/104788854,
- 自己尝试了各种办法仍然超时,真正感受到了python的低效率,上面同学的用空间换时间的思路还是不错的,这个办法比较通用,但是在这道题上,单用一个优化策略是不行的,我放弃了!