PAT1 1028 List Sorting

    xiaoxiao2025-09-02  1

    题目链接 我的github

    题目大意

    根据所给的 C C C来对记录排序

    输入

    每组包含一个测试用例, 每个用例的第一行是两个整数 N ( ≤ 1 0 5 ) N(\leq 10^5) N(105) C C C N N N是记录的行数, C C C是需要根据的列来进行排序,之后有 N N N行,每一行都是一组记录的数据。数据包括用户ID(六位数且唯一), 姓名(长度不超过8且不含空格的字符串), 分数0到100之间的整数

    输出

    对每个测试用例,以 N N N行输出结果。

    C = 1 C=1 C=1 ,记录的数据按照用户的ID升序排序 C = 2 C=2 C=2,就按照用户的姓名非递减排序 C = 3 C=3 C=3,按照用户的分数非递减排序

    如果用户的姓名或者分数一样, 就按照用户的ID升序排序

    样例输入

    3 1 000007 James 85 000010 Amy 90 000001 Zoe 60

    4 2 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 98

    4 3 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 90

    样例输出

    000001 Zoe 60 000007 James 85 000010 Amy 90

    000010 Amy 90 000002 James 98 000007 James 85 000001 Zoe 60

    000001 Zoe 60 000007 James 85 000002 James 90 000010 Amy 90

    解析

    这题用python如果姿势不正确就很容易超时。。。

    def solve(): n, c = map(int, input().split()) ans = list() for i in range(n): tot = input() ans.append(tot) if c == 1: ans = sorted(ans) elif c == 2: ans = sorted(ans, key=lambda x: (x[7:-3], x[:6])) elif c == 3: ans = sorted(ans, key=lambda x: (x[-2:], x[:6])) for i in ans: print(i) if __name__ == "__main__": solve()
    最新回复(0)