#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<string>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn = 110;
const int inf = 0x3f3f3f3f;
int n, m, x, y, k;
struct node
{
int w, m;
double p;
}a[maxn];
bool cmp(struct node a, struct node b)
{
return a.p > b.p;
}
int main()
{
scanf("%d", &k);
while (k--) {
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; ++i)
{
scanf("%d", &a[i].w);
}
for (int i = 1; i <= n; ++i)
{
scanf("%d", &a[i].m);
a[i].p = a[i].m*1.0 / a[i].w*1.0 + 1e-7;
}
sort(a + 1, a + 1 + n, cmp);
double ans=0;
for (int i = 1; i <= n; ++i)
{
ans += min(m, a[i].w)*a[i].p;
m -= min(m, a[i].w);
}
printf("%.2f\n", ans);
}
return 0;
}