傳送門
期望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個人將被處決即退出遊戲。然...