#P4008. Running relay

Running relay

题目描述

学校田径队正在参加跑步接力赛。队伍中共有 nn2n1042 \leq n \leq 10^4)名成员。为了让每个人都参与比赛,每位成员至少需要跑 dd0d100 \leq d \leq 10)米。除此之外,每个人可以跑任意距离。跑道的总长度为 LL1L1051 \leq L \leq 10^5)米。

对于队伍中的第 ii 名成员:

  • 如果他心情好,则跑一米需要 tit_i 秒(1ti4×1041 \leq t_i \leq 4 \times 10^4)。
  • 如果他心情差,则跑一米需要 sis_i 秒(1si4×1041 \leq s_i \leq 4 \times 10^4,且 1tisi1 \leq t_i \leq s_i)。

作为队伍的教练,你可以提前分配每位成员的跑步距离。假设:

  • 如果所有成员心情都差,队伍完成接力赛的总时间为 SS 秒。
  • 如果所有成员心情都好,队伍完成接力赛的总时间为 TT 秒。

你希望取得一个好成绩,但同时不希望在某些成员心情差时成绩太糟糕。因此,你希望在满足 SWS \leq W1W21474836471 \leq W \leq 2147483647)的条件下,求出 TT 的最小值。

输入格式

输入以一行整数开始,表示测试用例的数量。测试用例不超过 100100 个。

对于每个测试用例:

  • 第一行包含四个整数:nnddLLWW
  • 接下来的 nn 行,每行表示一名成员,包含两个整数 sis_itit_i,分别表示该成员心情差和心情好时跑一米所需的时间。

输出格式

对于每个测试用例:

  • 如果无法找到合适的分配方案,输出一行"No solution"。
  • 否则,输出 TT 的最小值(保留两位小数)。

样例输入 1

2
2 1 20 141
8 3
6 6
3 8 20 200
8 3
6 6
7 1

样例输出 1

88.50
No solution

来源

福州20112011