有n张A类票、n张B类票,在两张票都有的情况下,工作人员会以1/2的概率发票,否则就直接发仅存的那类票。
现在请问最后两张发出去的票是相同种类的概率是多少?
n≤2000
概率型dp
定义:dp[i][j]为还剩i张a类票,j张b类票,最后两张相同的概率。
易得出dp[i][0]=dp[0][i]=1.0 (i>=2)
多出一张票,不管是A类还剩B类,概率都是0.5。
所以状态转移方程:
#include<cstdio>
using namespace std;
double f[1251][1251];
int main()
{ int n;
scanf("%d",&n);
n/=2;
for (int i=2;i<=n;++i)
{ f[i][0]=1;f[0][i]=1;
}
for (int i=1;i<=n;++i)
for (int j=1;j<=n;++j)
{ f[i][j]=0.5*f[i-1][j]+0.5*f[i][j-1];
}
printf("%.4lf",f[n][n]);
}