Codeforces Round #105 (Div. 2) D 概率DP_html/css_WEB-ITnose
题目
呃 琢磨了半天还是琢磨出来了,题意有些模糊哈,有w个白色物品,b个黑色物品,A,B轮着抽,A先开始,谁先抽到白色谁赢,若最终都没有抽到白色 则算B赢,抽出来的物品不会放回去,B抽完以后 物品还会有一个额外产生丢失,问A赢的概率为多少
依旧是以目标状态为边界,当前状态到目标状态所需要的概率为 方程
dp[i][j] 代表当前轮到A抽的时候,还有i个白色的j个黑色的A赢的概率为多少
则当前转移可能有四种
1:A抽到了白色的,那么直接赢了,接下来不需要继续,所以没有与其它状态方程有联系
2:A抽到了黑色的,下一次B抽到了白色的 那么A输了,输了就结束了 对下面我们要求的答案无影响,所以不管这一个
3:A抽到了黑色,下一次B又抽到了黑色,且丢失的为白色的,也就是dp[i - 1][j - 2],因为这个都没有产生绝对赢输的状态,所以会对下面的方程转移递推有帮助,所以需要联系上
4:A抽到了黑色,下一次B抽到了黑色,且丢失的为黑色,也就是dp[i][j - 3],这个也没有产生绝对的输赢,所以还是需要联系上
那么边界dp[0][0] = 0,因为轮到A的时候没有可以抽的了,表示都抽光了,这时候按照题目条件算B赢的
还有dp[i][0]轮到A抽的时候 黑色的已经没有了,那么A只能抽白色的 所以肯定赢咯
还有dp[0][j]轮到A的时候白色的没有了,所以必输
double dp[1000 + 55][1000 + 55];int w,b;void init() { memset(dp,0.00,sizeof(dp));}bool input() { while(cin>>w>>b) { return false; } return true;}void cal() { dp[0][0] = 0.00; for(int i=1;i= 2) dp[i][j] += dp[i - 1][j - 2] * (j * 1.0)/(i + j) * (j - 1) * 1.0/(i + j - 1) * (i * 1.0)/(i + j - 2); if(j >= 3) dp[i][j] += dp[i][j - 3] * (j * 1.0)/(i + j) * (j - 1)*1.0/(i + j - 1) * (j - 2) * 1.0/(i + j - 2); } } printf("%.10lf\n",dp[w][b]);}void output() {}int main() { while(true) { init(); if(input())return 0; cal(); output(); } return 0;}
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前
By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
3 週前
By DDD

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

我如何使用html5< time> 元素以語義表示日期和時間?
