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
#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()
printf
("case %d: %.9f\n"
,++cc,dp[4]
);}int
main()
return0;
}
hdu4035 樹上概率dp
從葉子到根,帶入公式求引數 kuangbin hdu 4035 dp求期望的題。題意 有n個房間,由n 1條隧道連通起來,實際上就形成了一棵樹,從結點1出發,開始走,在每個結點i都有3種可能 1.被殺死,回到結點1處 概率為ki 2.找到出口,走出迷宮 概率為ei 3.和該點相連有m條邊,隨機走一條...
hdu 3853 概率dp入門
題意 在一塊r c的棋盤上,從位置 1,1 的地方走到位置為 r,c 的地方,每走一步的代價為2,在位置 i,j 可能會走到位置 i 1,j i,j 1 以及 i,j 題目中給出每個點走向下乙個方向的概率,求花的總代價。分析 一道很基礎的概率dp,dp i j 表示的是從位置 i,j 走到 r,c ...
hdu4336(壯壓DP 概率DP)
需要集齊n張卡片,每買一包零食,裡面可能有不同的卡片,存在每種卡片的概率已知,每包零食最多有一張卡片。問集齊n張的期望。dp i 表示i這個狀態下還需要多少包的期望,dp 1 一開始不會寫,看了別的狀態轉移方程 dp i sum dp i 1 如果想得到一張卡片,期望就是 1 va k 上面的方程和...