看上去很复杂的一个题. 然而数据范围 ( n \leq 50 )

基础知识0: python 里面 list 可以做 dict 的 key.

基础知识1: python 里面 list 可以直接比较大小, 比较方式就是元素的字典序.

做法是先按照 username 对记录进行归类 (dict of list).

然后把每个 username 对应的所有记录按 timestamp 进行排序. (sorted(…, key=lambda …))

然后枚举每个用户的所有访问页面三元组并扔进 list 里面. 因为要求一个用户只算一次, 所以要去除 list 里面重复的元素. 所以把 list 转换成 set (集合) 就好了. 也可以直接用 set.

然后把 set 里面的元素都用一个 dict 做一下记数.

最后从记数的 dict 里面挑出次数最多且字典序最小的就可以了.

代码链接