AcWing,第114场周赛-5058双色球
5058.双色球
约翰和贝茜玩抽球游戏。
一个盒子中有 n个白球和 m个黑球。
双方轮流行动,由约翰先行。
每当轮到一方行动时,其从盒中随机抽出一个球,盒子中的每个球被抽出的概率相同。
率先抽出白球的一方获胜。
此外,由于贝茜的手比较笨拙,所以每当她抽出一个球后,盒子都会剧烈摇晃,随后就会有恰好一个球掉出盒子(如果盒中有球的话),盒子中的每个球掉出的概率相同。
掉出的球无论是什么颜色,都予以作废。
当盒子中没有球时,如果仍未分出胜负,则判定为贝茜获胜。
请你计算,约翰获胜的概率。
输入格式
一行,两个整数 n,m。
输出格式
一个实数,表示约翰获胜的概率。
输出结果与正确答案的绝对误差不超过 1e−9,则视为正确。
数据范围
前 4个测试点满足 0≤n,m≤100。
所有测试点满足 0≤n,m≤1000。
输入:
1 3
输出:
0.500000000
输入样例2:
5 5
输出样例2:
0.658730159
代码
#include<bits/stdc++.h> using namespace std; const int N=1010; int n,m; double f[N][N]; int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { for(int j=0;j<=m;j++) { double p1 = 0,p2 = 0,p3 = 0; p1= i*1.0 / (i+j); double p4 = j*1.0/(i+j)*(j-1)/(i+j-1); if(j>=2) p2 = p4*i*1.0/(i+j-2)*f[i-1][j-2]; if(j>=3) p3=p4*(j-2.0)/(i+j-2)*f[i][j-3]; f[i][j]=p1+p2+p3; } } printf("%.10lf\n",f[n][m]); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理