【BZOJ 3191】[JLOI2013]卡牌游戏
生活随笔
收集整理的這篇文章主要介紹了
【BZOJ 3191】[JLOI2013]卡牌游戏
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
注意 最后一個(gè)沒有空格!!!!!
題解(摘自網(wǎng)絡(luò))
有一個(gè)很重要的性質(zhì):當(dāng)前人獲勝的概率只與其在排列中與莊家的相對(duì)位置和人數(shù)有關(guān)、、跟具體有哪些人無關(guān)、、
那么我們可以用f[i][j]表示還有i人時(shí)從莊家開始數(shù)第j個(gè)人獲勝的概率、、
于是可以枚舉當(dāng)前每種可能然后從f[i-1][*]轉(zhuǎn)移、、這就可以寫成一個(gè)DP了、、
//要特別注意 f的意義!!!!!
代碼
#include <cstdio> double f[51][51]; int a[51]; int n,m; int main() {scanf("%d %d",&n,&m);for(int i=1;i<=m;i++) scanf("%d",&a[i]);f[1][1]=1;for(int i=2;i<=n;i++)for(int j=1;j<=i;j++)for(int k=1;k<=m;k++){int tmp=a[k]%i;if(tmp==0) tmp=i; if(tmp==j) continue;if(tmp>j) tmp=i-tmp+j;else tmp=j-tmp; f[i][j]+=f[i-1][tmp]/(double)m;}for(int i=1;i<n;i++) printf("%.2lf%% ",f[n][i]*100.0);printf("%.2lf%%",f[n][n]*100.0);return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/ofsxb/p/5123374.html
總結(jié)
以上是生活随笔為你收集整理的【BZOJ 3191】[JLOI2013]卡牌游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现:首页--上一页--下一页--末页的
- 下一篇: 重磅!2020国家科学技术奖全名单公布!