#include<stdio.h>
int main()
{
long int t,i,j,k,m,n,l,d1;
float c;
scanf("%ld",&t);
for(m=0;m<t;m++)
{ c=0.0000;
scanf("%ld%ld",&n,&d1);
long long int a[n],p[n];
for(k=0;k<n;k++)
scanf("%d",&a[k]);
for(l=0;l<n;l++)
scanf("%d",&p[l]);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(d1>=0)
{
if((a[i]+d1)<a[j])
continue;
if(a[i]>(a[j]+d1))
{ c=c+1;
continue;
}
if((a[i]+d1)>a[j])
{
c=c+((p[i])*(100-p[j]));
}
if(a[i]>a[j])
{
c=c+((100-p[i])*(100-p[j]));
}
if(a[i]>(a[j]+d1))
{
c=c+((100-p[i])*(p[j]));
}
if((a[i]+d1)>(a[j]+d1))
{
c=c+((p[i])*(p[j]));
}
}
else{
if((a[i])<(a[j]+d1))
continue;
if((a[i]+d1)>(a[j]))
{ c=c+1;
continue;
}
if((a[i]+d1)>a[j])
{
c=c+((p[i])*(100-p[j]));
}
if(a[i]>a[j])
{
c=c+((100-p[i])*(100-p[j]));
}
if(a[i]>(a[j]+d1))
{
c=c+((100-p[i])*(p[j]));
}
if((a[i]+d1)>(a[j]+d1))
{
c=c+((p[i])*(p[j]));
}
}
}
printf("%20.4f\n",c/10000);
}
return 0;