牛牛與牛妹的遊戲

2021-09-27 09:51:28 字數 1411 閱讀 2551

題目:

牛牛 和 牛妹 正在玩乙個遊戲

牛牛扔了a個b面的骰子

牛妹扔了c個d面的骰子

對於乙個x面的骰子,每個面依次會寫有1到x的數

乙個玩家的得分就是每個骰子朝上的面的數字的總和,乙個玩家能贏另乙個玩家當且僅當得分嚴格大於另乙個玩家,給你a,b,c,d,如果牛牛不可能贏,輸出-1

否則假設你知道了牛牛贏了,但是不知道牛牛和牛妹的具體分數,返回牛牛的期望得分

輸入一行,包含4個整數a,b,c,d (1 ≤ a,b,c,d ≤ 50)

輸出乙個浮點數,誤差在1e-3以內

輸入

1 2 1 5

輸出2.0

示例 2

輸入3 1 1 3

輸出3.0

示例3輸入

1 5 1 1

輸出3.4999999999999996

示例4輸入

2 6 50 30

輸出-1.0

示例5輸入

50 11 50 50

輸出369.8865999182022

思路:題目意思是牛牛能贏的情況下的得分期望,所以我們只需要算出牛牛能贏的所有情況的總數,再算出牛牛能贏的每一種情況下牛牛能得的分,計算其總和,兩者相除即可;dp[i][j]表示擲了i個骰子,得分為j的情況的有多少種.

遞推方程:

dp[i][j]+=dp[i-1][j-k] (j>=k,k代表第i個骰子的點數)
**:
//牛牛與牛妹的遊戲

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

const

int maxn=55;

double dp1[maxn]

[2600

], dp2[maxn]

[2600];

double add[

2600];

//add[j]牛妹的得分小於等於j的情況有多少種

intmain()

}}for(

int i=

1; i<=c; i++)}

}for

(int i=c; i<=c*d; i++

)double result1, result2=0;

for(

int i=c+

1; i<=a*b; i++

)for

(int i=c; i<=c*d; i++)}

printf

("%lf\n"

, result1/result2);}

return0;

}

牛妹的遊戲

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld upd 資料保證不會有兩條控制鏈控制的據點完全相同,也保證不會有某條控制鏈兩端控制的據點相同。牛妹最近沉迷於乙個名為 ingress 的遊戲中 遊戲中,藍綠營兩個對...

牛客 牛牛與陣列

牛牛喜歡這樣的陣列 1 長度為n 2 每乙個數都在1到k之間 3 對於任意連續的兩個數a,b,a b 與 a b 0 兩個條件至少成立乙個 請問一共有多少滿足條件的陣列,對1e9 7取模 輸入兩個整數n,k 1 n 10 1 k 100000輸出乙個整數示例1 複製2 2 複製3 示例2複製9 1 ...

牛牛的遊戲

1.a的最後乙個字母和b的第乙個字母相同 2.b的最後乙個字母和c的第乙個字母相同。現在牛牛給出了3個字串a,b,c,希望你能判斷這3個字串能否構成乙個 字串鏈 若能則輸出 yes 否則輸出 no 輸入描述 一行,3個字串,每兩個字串之間用乙個空格分隔。1.a,b,c均由小寫的英文本母組成 2.1 ...