氧气少年逛超市 3
题号:NC266907
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
Special Judge, 64bit IO Format: %lld

题目描述

\sf Take\ that\ money,\ and\ watch\ it\ burn

\sf Sink\ in\ the\ river,\ the\ lessons\ I’ve\ learned

       —— \text{OneRepublic},\ Counting\ Stars
氧气少年在逛超市。
他总共买了 n 件商品,第 i 件商品的价格为 p_i

超市有下面的打折政策:
  •  每名顾客有 a 张折扣券,第 i 张折扣券的折扣为 x_i,即:如果此商品原价为 p_j,那么使用此优惠券后,价格变为 p_j\times x_i\%
  •  每名顾客有 b 张立减券,第 i 张立减券的面额为 y_i,即:如果此商品原价为 p_j,那么使用此优惠券后,价格变为 \max(0,p_j-y_i)
  •  每件商品最多使用 1 张优惠券。

请求出氧气少年可能付出的最小的花费。

输入描述:

第一行包含一个整数 T(1\leq T\leq 5000),表示测试用例的组数。

对于每组测试用例:

第一行包含一个整数 n(1\leq n\leq 5000)
第二行包含 n 个整数 p_1\dots p_n\ (1\leq p_i\leq 10^4),表示商品的价格。
第三行首先包含一个整数 a(0\leq a\leq n),表示折扣券的数量。接下来有 a 个整数 x_1\dots x_a\ (1\leq x_i\leq 99),表示序列 x
第四行首先包含一个整数 b(0\leq b\leq n),表示立减券的数量。接下来有 b 个整数 y_1\dots y_b\ (1\leq y_i\leq 10^4),表示序列 y

保证对于所有的测试用例,n 的总和不超过 5000

输出描述:

对于每组测试用例:

仅输出一行,包含一个实数,表示答案。如果你的答案和标准答案的绝对误差或相对误差不超过 10^{-4},则你的答案会被认定为正确。
示例1

输入

复制
2
5
10 20 30 40 50
1 10
1 50
5
17 26 19 29 47
2 69 20
1 46

输出

复制
64.000000000000
60.740000000000