日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU - 6558/概率dp(从后往前推导)

發布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU - 6558/概率dp(从后往前推导) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

VJ地址
中文題意:
有一個苦逼程序員小A,他有一個女朋友B,最近看上了一個游戲,他想買這個游戲,可是小A是一個怕老婆的人,每個 月的工資都需要上交,小A找他女朋友商量了好久,最后B同意他用每個月的工作獎金來買游戲,且還需要和B玩智力游戲,贏了才能去買游戲,具體情況是這樣的:
步驟1. 先假設小A 贏 小B的幾率為 q = 2%
步驟2. 這個月小 A 獲得工作獎金的幾率為 P
步驟3. 如果這個月小 A 獲得了工作獎金則轉到步驟 4,否則轉到步驟5
步驟4. 如果小 A 以 q 的勝率贏了小B,小A就可以去買游戲了,如果沒有贏,則 q = min(100%, q+ 2%),并轉到步驟2
步驟5. 小A 不甘心,使得 q = min(100%,q+1.5%),并轉到步驟2進行下一個月
那么請問,當你知道小 A 獲得獎金幾率為 p 的情況下,小 A 預期要用幾個月才能買到自己的游戲(即求 月數 的期望)

思路
概率dp
dp[i]表示在q的概率等于i的時候,A預計要dp[i]個月才能獲勝(既數學期望),那么當i=100時,dp[i]=1/p;
當小于100時,
因為1.5是小數,不能當下標,所以2,翻倍處理
dp[i]=qi1.0/200.0(贏了)+q(1-i1.0/200.0)(dp[min(i+4,200)]+1)(得了工作獎金但是輸給B)+(1-q)*(dp[min(i+3,200)]+1)(沒有得到工作獎金);

代碼:

#include <bits/stdc++.h> #define lc u << 1 #define rc u << 1 | 1 using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int, int> pii; const int N = 4e6+10; const int inf = 0x3f3f3f3f; const ll INF = 0x3f3f3f3f3f3f3f3f; const ll mod = 1e9+7; const double eps = 1e-8;double dp[210]; int cc; void solve() {double q;cin>>q;q/=100;dp[200]=1/q;for(int i=199;i>=4;i--){dp[i]=q*i*1.0/200.0+q*(1-i*1.0/200.0)*(dp[min(i+4,200)]+1)+(1-q)*(dp[min(i+3,200)]+1);}printf("Case %d: %.9f\n",++cc,dp[4]); } int main() {int t;t=1;cin>>t;while(t--){solve();}return 0; }

總結

以上是生活随笔為你收集整理的HDU - 6558/概率dp(从后往前推导)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。