#dxy26003. 图书排行榜
图书排行榜
在线书店书籍排序
题目描述
小明的在线书店需要对 本书进行展示排序。每本书拥有四个属性:
| 属性 | 类型 | 说明 |
|---|---|---|
书名 title |
字符串 | 由字母和空格组成,长度 |
月销量 sales |
整数 | 正整数 |
用户评分 rating |
浮点数 | 范围 ,精确到小数点后一位 |
评论数 reviews |
整数 | 非负整数 |
排序规则(优先级从高到低,无特殊说明均为降序)
- 热门指数计算公式:$\text{hot} = \text{sales} \times 0.4 + \text{rating} \times 20.0 + \text{reviews} \times 0.3$,按热门指数降序;
- 热门指数相同,按月销量
sales降序; - 销量相同,按评分
rating降序; - 评分相同,按书名
title升序(字典序 A-Z)。
请按排序后的顺序输出每本书的书名与热门指数,热门指数保留 1 位小数。
输入格式
第一行一个整数 ,代表书本总数。 随后共 行,每两行为一本书的数据:
- 第一行:书名(包含空格,需完整读取整行);
- 第二行:三个数据,依次为月销量(整数)、用户评分(浮点数)、评论数(整数)。
输出格式
共 行,每行输出书名与保留1位小数的热门指数,中间用空格隔开。
样例输入 1
4
C++ Primer
500 4.8 200
Python入门
800 4.5 350
算法导论
300 4.9 500
Java编程
600 4.6 150
样例输出 1
Python入门 515.0
Java编程 377.0
算法导论 368.0
C++ Primer 356.0
样例1解释
各书籍热门指数计算:
- C++ Primer:$500 \times 0.4 + 4.8 \times 20 + 200 \times 0.3 = 200 + 96 + 60 = 356.0$
- Python入门:$800 \times 0.4 + 4.5 \times 20 + 350 \times 0.3 = 320 + 90 + 105 = 515.0$
- 算法导论:$300 \times 0.4 + 4.9 \times 20 + 500 \times 0.3 = 120 + 98 + 150 = 368.0$
- Java编程:$600 \times 0.4 + 4.6 \times 20 + 150 \times 0.3 = 240 + 92 + 45 = 377.0$
排序顺序:Python入门 > Java编程 > 算法导论 > C++ Primer
样例输入 2
3
BookA
100 4.5 50
BookB
100 4.5 50
BookC
200 4.0 0
样例输出 2
BookC 160.0
BookA 145.0
BookB 145.0
样例2解释
- BookA:$100 \times 0.4 + 4.5 \times 20 + 50 \times 0.3 = 145.0$
- BookB:计算结果同为
- BookC:$200 \times 0.4 + 4.0 \times 20 + 0 \times 0.3 = 160.0$
BookC 热门指数最高排在首位;BookA、BookB 前三关键字全部相等,按书名字典升序,BookA 在前。
数据范围与约束
| 参数 | 范围 |
|---|---|
| 书名长度 | |
| sales | |
| rating | (仅一位小数) |
| reviews | |
| 时间复杂度要求 |
相关
在下列比赛中: