2 solutions
-
0
题面描述
塔子哥使用Stable Diffusion的“图生图”功能生成了一些图片,并为每张图片打了分数。他希望根据自己的经验值选择出分数排名相应的图片作为下一次绘图的参考。输入包括图片的总数、塔子哥的经验值以及每张图片的评分。输出应为符合条件的图片分数和对应的编号,所有信息以空格分隔。
思路:模拟,排序,哈希表
1.我们使用一个集合 st 来记录已经出现的有效分数,和一个向量 items 来存储这些分数以便后续排序。
2.筛选:对于每一张照片的分数 x,我们首先检查它是否大于 20 分。如果不大于 20 分,则不予考虑,直接跳过。对于大于 20 分的分数,我们检查它是否已经在集合 st 中。如果在,则将其出现的下标记录到一个映射 mp 中;如果不在,则将其加入集合和 items 向量,并在映射中初始化它的下标。
3.在处理完所有照片后,我们对 items 向量进行排序,按从大到小的顺序排列,以便我们可以找到排名第y 的分数。
题解
我们需要从塔子哥生成的图片中筛选出有效的评分,以便选择合适的图片作为下一次“图生图”绘画的参考。具体步骤如下:
-
数据结构初始化:
- 使用一个集合
st
来记录已经出现的有效分数,这样可以确保分数的唯一性。 - 使用一个向量
items
来存储所有有效分数,以便后续的排序操作。 - 建立一个映射
mp
,将有效分数与它们对应的图片下标关联起来,便于查找。
- 使用一个集合
-
评分筛选:
- 对于每张图片的评分
x
,首先判断其是否大于 20。如果不满足条件,则直接跳过这张图片。 - 如果评分大于 20,检查该分数是否已经在集合
st
中:- 如果在集合中,说明该分数之前已出现,直接将当前图片的下标添加到映射
mp
中。 - 如果不在集合中,则将分数插入集合
st
,同时将其加入items
向量,并在映射mp
中初始化该分数对应的下标。
- 如果在集合中,说明该分数之前已出现,直接将当前图片的下标添加到映射
- 对于每张图片的评分
-
排序与选择:
- 在处理完所有图片后,使用
sort
函数对items
向量进行排序,按照分数从大到小的顺序排列,以便查找排名第y
的分数。 - 最后,输出排名第
y
的分数以及所有对应的图片下标。
- 在处理完所有图片后,使用
代码
C++代码
Python
java
-
- 1
Information
- ID
- 39
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 2
- Tags
- # Submissions
- 147
- Accepted
- 34
- Uploaded By