P2059 JLOI2013 卡牌遊戲

2022-05-20 02:48:09 字數 893 閱讀 7422

傳送門

期望dp

剛開始想的就是dp

設 f [ i ] [ j ] 表示已經進行了 i 輪,莊家為 j

但是發現好像轉不了...

不知道哪些人被踢出去了...

看一下資料,好像搞不了狀壓

那麼換種思路

從 結束狀態 往 開始狀態 推

不需要知道具體哪個人是莊家,只要知道與莊家相對位置為 x 時的獲勝概率

好像可以...

設 f [ i ][ j ] 表示還剩 i 個人,從莊家開始順時針數第 j 個人獲勝的概率

顯然 f [ 1 ] [ 1 ] = 1.0,如果能遞推,那麼第 i 個人獲勝的概率就是 f [ n ] [ i ]

考慮轉移

肯定要列舉牌 p[ ]

如果摸到 p[ k ],那麼第 p[ k ] 個人要被踢出

所以除了第 p[ k ] 個人以外,其他人都可以從上一層對應的位置得到一些勝率

但是要注意摸到 p[ k ] 的概率只有 1/m ,所以得到的勝率也要 * (1/m)

然後就可以轉移了

具體還是看**吧

#include#include

#include

#include

#include

using

namespace

std;

int n,m,p[57

];double f[57][57

];int

main()

}for(int i=1;i<=n;i++)

printf(

"%.2lf%%

",f[n][i]*100.0

);

return0;

}

洛谷P2059 JLOI2013 卡牌遊戲

題目描述 n個人坐成一圈玩遊戲。一開始我們把所有玩家按順時針從1到n編號。首先第一回合是玩家1作為莊家。每個回合莊家都會隨機 即按相等的概率 從卡牌堆裡選擇一張卡片,假設卡片上的數字為x,則莊家首先把卡片上的數字向所有玩家展示,然後按順時針從莊家位置數第x個人將被處決即退出遊戲。然後卡片將會被放回卡...

JLOI2013 卡牌遊戲

讀完題可以很容易的想到暴力模擬,列舉每一張卡片,然後看誰被淘汰,去掉被淘汰的人後從他的下乙個人開始重複上面的操作,直到剩下乙個人,那麼乙個人獲勝的概率就是他贏的狀態數除以總狀態數,複雜度為o n o n o n 直接t tt飛。考慮優化,我們發現複雜度主要是被人的編號所約束,因為我們在考慮乙個人獲勝...

JLOI2013 卡牌遊戲

jloi2013 卡牌遊戲 n個人坐成一圈玩遊戲。一開始我們把所有玩家按順時針從1到n編號。首先第一回合是玩家1作為莊家。每個回合莊家都會隨機 即按相等的概率 從卡牌堆裡選擇一張卡片,假設卡片上的數字為x,則莊家首先把卡片上的數字向所有玩家展示,然後按順時針從莊家位置數第x個人將被處決即退出遊戲。然...