#L6352. 魔法元首的代表色选择
魔法元首的代表色选择
魔法元首的代表色选择
题目描述
小朋友,你们好吗?还能记得我是谁吗?我就是魔法元首まどか!
「和我签订契约,成为魔法元首吧!」
于是这天元首不明所以地被地外生物 Kyubey 忽悠去成为了魔法元首。不过在开始练习魔法之前,元首需要为自己的魔法选择一个代表色。
下图是一个明度最大(即 HSV 色彩空间中 V = 100%)的单位圆色盘:

色盘上任意一点的坐标为非负实数对 ,其中 ,,表示色相为 、饱和度为 的颜色。另一种理解是:
- 表示从联结圆心和纯红色点的射线顺时针到达该点所经过的角度;
- 是该点到单位圆圆心的距离。
RGB 转换规则
从坐标 到红绿蓝颜色值 的转换步骤如下:
$$\begin{align} h &= \left\lfloor \frac{\alpha}{60} \right\rfloor \\ f &= \frac{\alpha}{60} - h \\ p &= 1 - (r\%) \\ q &= 1 - f \times (r\%) \\ t &= 1 - (1 - f) \times (r\%) \end{align} $$最终 按 的取值确定:
$$(R, G, B) = \begin{cases} (1, t, p), & \text{if } h = 0 \\ (q, 1, p), & \text{if } h = 1 \\ (p, 1, t), & \text{if } h = 2 \\ (p, q, 1), & \text{if } h = 3 \\ (t, p, 1), & \text{if } h = 4 \\ (1, p, q), & \text{if } h = 5 \end{cases} $$请参照样例确认对公式的理解和实现。
亮度定义
一个颜色 的亮度定义为:
下图给出了彩色色盘和表示亮度的灰度色盘的左右对比:

问题要求
按照 Kyubey 的判断,元首可以选择色盘所在平面上一条给定直线段 上的任意颜色。作为 bling bling 的帝国领导者,元首要选择最亮的颜色。
请编写程序帮助元首计算给定直线段上所有颜色的最大亮度。
输入格式
- 第一行输入正整数 ,表示测试数据组数(各组数据之间无空行)。
- 接下来 行,每行输入四个空格分隔的整数 、、、,分别表示直线段两个端点的坐标。
输出格式
- 对于每组数据,输出一行十进制小数(范围 ),表示直线段上所有颜色的最大亮度。
- 要求四舍五入保留恰好四位小数。数据保证若参考答案为 ,则 范围内任意实数四舍五入到第四位小数后均相等。
样例
样例输入
6
30 30 30 30
120 60 120 60
270 100 270 100
30 30 120 60
120 60 270 100
270 100 30 30
样例输出
0.8785
0.7540
0.2600
0.9704
0.9408
0.8785
样例解释
- 点 的 RGB 值为 ,亮度计算:$0.30 \times 1.00 + 0.59 \times 0.85 + 0.11 \times 0.70 = 0.8785$;
- 点 的 RGB 值为 ,亮度计算:$0.30 \times 0.40 + 0.59 \times 1.00 + 0.11 \times 0.40 = 0.7540$;
- 点 的 RGB 值为 ,亮度计算:$0.30 \times 0.50 + 0.59 \times 0.00 + 0.11 \times 1.00 = 0.2600$。
数据范围与提示
- 通用约束:,,。
- 测试点附加限制如下表:
| 测试点编号 | 附加限制 |
|---|---|
| 1 | , |
| 2 | 无 |
| 3 | |
| 4 | 无 |
| 5 | |
| 6 | 无 |
| 7 | , |
| 8 | 无 |
| 9 | |
| 10 |