Tokitsukaze and Average of Substring
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

Tokitsukaze 有一个只含小写字母的字符串 s,长度为 n

s_i = s_j (l \leq i < j \leq r),则称 s_is_j 为一对相同字符。定义 C(l,r) 为 字符串 [l,r] 的子串中相同字符的对数。

例如对于字符串 ``aaabab'',C(1,1)=0, C(1,2)=1, C(1,3)=3, C(3,5)=1, C(1,6)=7 (有 6 对 `a' 以及 1 对 `b')。

定义 F(l,r)=\frac{C(l,r)}{(r-l+1)}。Tokitsukaze 想知道对于 s 的所有子串,F(l,r) 的最大值是多少。

输入描述:

第一行包含一个整数 T (1 \leq T \leq 5000) --- 测试数据的组数。

对于每组测试数据:

第一行包含一个整数 n (1 \leq n \leq 5000) --- 字符串 s 的长度。

第二行包含一个只含小写字母的字符串 s

数据保证 \sum n \leq 5000

输出描述:

对于每组测试数据,输出一行,每行包含一个小数 --- F(l,r) 的最大值。你的答案被视为正确当且仅当你的答案与实际答案的绝对误差或相对误差不超过 10^{-4}
示例1

输入

复制
4
5
aabab
1
a
6
aaabab
11
teeqtqrqwwe

输出

复制
0.800000
0.000000
1.200000
0.727273

说明

第一个样例:F(1,5)=\frac{C(1,5)}{(5-1+1)}=\frac 4 5

第二个样例:F(1,1)=\frac{C(1,1)}{(1-1+1)}=\frac 0 1

第三个样例:F(1,5)=\frac{C(1,5)}{(5-1+1)}=\frac 6 5