TYVJ 2002 撲克牌 題解

2021-07-23 11:53:09 字數 1322 閱讀 2262

p2002撲克牌

admin生日那天,rainbow來找admin玩撲克牌……

玩著玩著rainbow覺得太沒意思了,於是決定給admin乙個考驗~~~

rainbow把一副撲克牌(54張)隨機洗開,倒扣著放成一摞。然後admin從上往下依次翻開每張牌,每翻開一張黑桃、紅桃、梅花或者方塊,就把它放到對應花色的堆裡去。

rainbow想問問admin,得到a張黑桃、b張紅桃、c張梅花、d張方塊需要翻開的牌的張數的期望值e是多少?

特殊地,如果翻開的牌是大王或者小王,admin將會把它作為某種花色的牌放入對應堆中,使得放入之後e的值盡可能小。

由於admin和rainbow還在玩撲克,所以這個程式就交給你來寫了~

輸入僅由一行,包含四個用空格隔開的整數,a,b,c,d。

輸出需要翻開的牌數的期望值e,四捨五入保留3位小數。

如果不可能達到輸入的狀態,輸出-1.000。

樣例輸入1

1 2 3 4

樣例輸入2

15 15 15 15

樣例輸出1

16.393

樣例輸出2

-1.000

對於100%的資料,0<=a,b,c,d<=15

lydrainbowcat - "admin生日"杯noip模擬賽 第三題

————————————————————我是分割線————————————————————————

好題。數學期望dp

用記憶化搜尋實現。

陣列竟然六維,可怕......

1 #include 2 #include 3 #include 4 #include5 #include 6 #include 7

using

namespace

std;

8double dp[15][15][15][15][5][5];9

bool vis[15][15][15][15][5][5

];10

int t[4

];11

double dfs(int a,int b,int c,int d,int e,int

f)12

22 md=100; if (f==4)

23 vis[a][b][c][d][e][f]=true;24

return dp[a][b][c][d][e][f]=f;25}

26int

main()

27

tyvj 2002

TYVJ 2002 撲克牌 題解

p2002撲克牌 admin生日那天,rainbow來找admin玩撲克牌 玩著玩著rainbow覺得太沒意思了,於是決定給admin乙個考驗 rainbow把一副撲克牌 54張 隨機洗開,倒扣著放成一摞。然後admin從上往下依次翻開每張牌,每翻開一張黑桃 紅桃 梅花或者方塊,就把它放到對應花色的...

撲克牌排序 趣味撲克牌

一提到撲克牌,我們就想到神秘的魔術表演,撲克牌上有很多形狀和數字,裡面蘊藏了很多數學知識哦!瞧 subway的小朋友們正在進行趣味撲克牌的遊戲呢!好多撲克牌啊!撲克牌中間怎麼是空的呢?哇,還有這麼小的撲克牌呢!一看到teacher手中的撲克牌,小傢伙們乙個個的都興奮起來,迫不及待想要分享自己的見解呢...

生成撲克牌

class card private int id public int rank 大小 public cardsuit suit 花色 public override string tostring public static ienumerablegetcards54 隨機發54張牌 publi...