P2059 [JLOI2013]卡牌游戏
作者:互联网
这是一道可怕的概率dp。
如果\(n=1\),那么胜率100%。
如果\(n=2\),可以暴力算出答案。
如果\(n=3\),可以发现,当淘汰了其中的某个人的时候,局面就会变成\(n=2\)的其中一个局面!
所以我们按\(n\)从小到大递推,可以逐步算出答案。
具体看看我抄过来的代码8:
for(int i = 2; i <= n; ++i)//根据i-1人环,求出i人环的情况
for(int k = 1; k <= m; ++k)//枚举本轮庄家选择的牌
{
int p = (a[k] % i == 0) ? i : a[k] % i;
//如果取a[k],第a[k] % i(用p记录)人被淘汰,下一轮p+1坐庄
for(int j = 1; j <= i-1; ++j)// 环中除了自己的其他人
{
++p;//下一个人
if(p > i)
p = 1;
f[i][p] += f[i-1][j] / (double)(m);
}
}
最后的答案就是\(dp[n][i] \times 100 \%\)。
preference
https://www.luogu.org/blog/costudy/solution-p2059
标签:www,JLOI2013,抄过来,int,卡牌,胜率,答案,P2059,dp 来源: https://www.cnblogs.com/Garen-Wang/p/10959566.html