#1513 : 小Hi的烦恼(bitset求五维数点)
读取输入数据:首先读取学生人数N,然后读取每个学生的五门科目排名。 存储排名数据:将每个学生的五门科目排名转换成一个元组,并存储在一个列表中。 排序元组:对存储的元组列表进行排序,元组的比较是按字典序进行的。 查找位置:对于每个元组,使用二分查找来确定它在排序后的列表中的位置。这个位置即为比当前学生在所有科目中都排在他前面的学生人数。 读取输入:使用 存储元组:将每个学生的排名转换成元组,并存储在 排序元组:使用 二分查找:对于每个元组,使用
发布日期:2025-06-08 00:06:31
浏览次数:3
分类:精选文章
本文共 845 字,大约阅读时间需要 2 分钟。
为了解决这个问题,我们需要为每个学生计算有多少人在所有五门科目中都排在他前面。我们可以通过将每个学生的五门科目排名转换成一个元组,然后对这些元组进行排序,进而找到每个元组在排序后的列表中的位置来确定答案。
方法思路
这种方法的时间复杂度主要由排序操作决定,为O(N log N),其中N是学生人数,能够在合理时间内处理问题。
解决代码
import bisectn = int(input())students = []for _ in range(n): ranks = list(map(int, input().split())) students.append(tuple(ranks))students_sorted = sorted(students)for student in students: pos = bisect.bisect_left(students_sorted, student) print(pos)
代码解释
input()读取输入数据,首先读取学生人数N,然后逐行读取每个学生的五门科目排名。students列表中。sorted()函数对students列表中的元组进行排序。bisect.bisect_left()函数在排序后的列表中找到其位置,位置即为比当前学生在所有科目中都排在前面的学生人数。每个位置的值逐行输出。这种方法高效且简洁,能够在合理时间内处理较大的输入规模。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2026年06月04日 16时18分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PIGS POJ 1149 网络流
2023-03-02
PIL Image对图像进行点乘,加上常数(等像素操作)
2023-03-02
PIL Image转Pytorch Tensor
2023-03-02
PIL&QOOT;IOERROR:带有大图像的图像文件被截断(&Q)
2023-03-02
PIL.Image、cv2的img、bytes相互转换
2023-03-02
PIL.Image进行图像融合显示(Image.blend)
2023-03-02
pilicat-dfs 霹雳猫-分布式文件系统
2023-03-02
Pillow lacks the JPEG 2000 plugin
2023-03-02
SpringBoot之ElasticsearchRestTemplate常用示例
2023-03-02
ping 全网段CMD命令
2023-03-02
ping 命令的七种用法,看完瞬间成大神
2023-03-02
Pinia入门(快速上手)
2023-03-02
Pinia:$patch的使用场景
2023-03-02
Pinia:$subscribe()的使用场景
2023-03-02
Pinpoint对Kubernetes关键业务模块进行全链路监控
2023-03-02
Pinterest 大规模缓存集群的架构剖析
2023-03-02
PinYin4j库的使用
2023-03-02
PIP
2023-03-02