套用第二类卡特林数,则合法方案总数为
C
(
n
+
m
,
m
)
−
C
(
n
+
m
,
m
−
1
)
C(n+m,m)-C(n+m,m-1)
C(n+m,m)−C(n+m,m−1)
然后概率就是(n-m+1/n+1)
第二类卡特林数就是从(0,0)到(m,n),且不经过x=y的方案数,然后讨论一下就可以得出方案数了
#include<bits/stdc++.h>
using namespace std;
int n,m;
int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
if(n<m){
puts("0.000000");
continue;
}
double ans=1.00000000*(n+1-m)/(n+1);
printf("%.6f\n",ans);
}
}