概率dp, 應該做得還是比較少的
設\(f[i][j]\)為該圈有\(i\)人時, 第\(j\)個人最後勝利的概率
列舉選擇第幾張卡牌, 設其值為\(card[k]\), 那麼被淘汰的則是\(card[k] \% i\), 分類討論
就是這樣, 最後算百分數不要忘記乘一百
#include #include #include #include #include #include #define itn int
#define read read
#define n 55
using namespace std;
int n, m, card[n];
double f[n][n];
inline int read()
while(c >= '0' && c <= '9')
return x * w;
}int main()
for(int i = 1; i <= n; i++)
printf("%.2lf%c%c", f[n][i] * 100, '%', i == n ? '\n' : ' ');
return 0;
}
題解 JLOI2013卡牌遊戲
這題最開始是用 n 的演算法水過的,之後才想出的 n 正解。首先,n 應該是很容易想到的 設狀態 f i j k 為有 i 個人,莊家為 j 號人時,第 k 個人勝出的概率。這樣,只需要去掉本輪淘汰的人,加上 i 1 個人時該人勝出的概率即可。include using namespace std ...
JLOI2013 卡牌遊戲
讀完題可以很容易的想到暴力模擬,列舉每一張卡片,然後看誰被淘汰,去掉被淘汰的人後從他的下乙個人開始重複上面的操作,直到剩下乙個人,那麼乙個人獲勝的概率就是他贏的狀態數除以總狀態數,複雜度為o n o n o n 直接t tt飛。考慮優化,我們發現複雜度主要是被人的編號所約束,因為我們在考慮乙個人獲勝...
JLOI2013 卡牌遊戲
jloi2013 卡牌遊戲 n個人坐成一圈玩遊戲。一開始我們把所有玩家按順時針從1到n編號。首先第一回合是玩家1作為莊家。每個回合莊家都會隨機 即按相等的概率 從卡牌堆裡選擇一張卡片,假設卡片上的數字為x,則莊家首先把卡片上的數字向所有玩家展示,然後按順時針從莊家位置數第x個人將被處決即退出遊戲。然...