Luogu P2059 [JLOI2013]卡牌游戏】的更多相关文章

一道比较简单的概率DP 首先看到这种题目和数据范围,就要毫不犹豫地列DP方程: 我们令\(f_{i,j}\)表示还剩下i个人时编号为j的人的胜率,那么首先我们可以知道边界条件\(f_{1,1}=1\) 然后我们考虑多一个人的情况会是怎样. 我们先枚举还剩下\(i(2<=i<=n)\)个人,然后对于每一个人\(j(1<=j<=i)\)(注意这里是的\(j\)指的是在这\(i\)个人里的编号) 然后枚举卡片\(k\),对于上面的数字\(a_k\)我们先得出这一轮会被淘汰的人的编号\(x…
P2059 [JLOI2013]卡牌游戏 题意 有\(n\)个人玩约瑟夫游戏,有\(m\)张卡,每张卡上有一个正整数,每次庄家有放回的抽一张卡,干掉从庄家起顺时针的第\(k\)个人(计算庄家),干掉的那位下家成为新庄家,初始庄家为1,最后活下的人胜利,求每个人获胜概率. 约瑟夫类型的题目有个套路,以庄家为相对位置进行重新编号. 可以进行dp \(dp_{i,j}\)表示第\(i\)轮(倒着数的)距离庄家为\(j\)的人的获胜概率,这样就可以很简单的转移了 复杂度\(O(n^2m)\) Code:…
题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把卡片上的数字向所有玩家展示,然后按顺时针从庄家位置数第X个人将被处决即退出游戏.然后卡片将会被放回卡牌堆里并重新洗牌.被处决的人按顺时针的下一个人将会作为下一轮的庄家.那么经过N-1轮后最后只会剩下一个人,即为本次游戏的胜者.现在你预先知道了总共有M张卡片,也知道每张卡片上的数字.现在你需要确定每个…
题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把卡片上的数字向所有玩家展示,然后按顺时针从庄家位置数第X个人将被处决即退出游戏.然后卡片将会被放回卡牌堆里并重新洗牌.被处决的人按顺时针的下一个人将会作为下一轮的庄家.那么经过N-1轮后最后只会剩下一个人,即为本次游戏的胜者.现在你预先知道了总共有M张卡片,也知道每张卡片上的数字.现在你需要确定每个…
link:https://www.luogu.org/problemnew/show/P2059 题意: 有n个人,类似约瑟夫环的形式踢人,但是报的数是不同的,是在给定的许多数中随机抽取,问最后第i个人赢的概率: 思路: 假设dp[i][j],表示剩下i个人,从庄家后 第 j 个人在本轮不被淘汰的概率 我们可以首先枚举庄家抽到的卡牌k,得到这一轮被淘汰的人的位置c.当然,如果c=j ,就不要考虑了(因为这表示此轮第j个人被淘汰). 而第c个人被淘汰之后,剩下的i−1个人要组成一个新的环,庄家为第…
题面 洛谷 题解 \(f[i][j]\)表示有i个人参与游戏,从庄家(即1)数j个人获胜的概率是多少 \(f[1][1] = 1\) 这样就可以不用讨论淘汰了哪些人和顺序 枚举选庄家选那张牌, 枚举下一次的庄家 可以得到这次的庄家 然后转移即可 Code #include<bits/stdc++.h> #define LL long long #define RG register using namespace std; template<class T> inline void…
Solution 设状态 $F[i][j] $为 还剩余 $i$ 个人时, 第 $j$ 个人 的胜率. 边界: $F[1][1] = 1$(只剩下一个人了). 这样设置状态就能使 $i-1$ 个人的答案 转移到 $i$ 个人的答案上. 最后输出 $F[N][i]$ . 状态转移: ) % i + ; if (tmp == j) continue; tmp = j - tmp; tmp = (tmp % i + i) % i; f[i][j] += ][tmp]; Code #include<cs…
BZOJ_3191_[JLOI2013]卡牌游戏_概率DP Description   N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把卡片上的数字向所有玩家展示,然后按顺时针从庄家位置数第X个人将被处决即退出游戏.然后卡片将会被放回卡牌堆里并重新洗牌.被处决的人按顺时针的下一个人将会作为下一轮的庄家.那么经过N-1轮后最后只会剩下一个人,即为本次游戏的胜…
http://www.lydsy.com/JudgeOnline/problem.php?id=3191 每个人获胜的概率只与其在排列中与庄家的相对位置有关 dp[i][j] 还剩i个人时,从庄家数第j个人获胜的概率 枚举这一次选哪张牌 那么出局的就是从庄家数第(a[k]-1)% i+1 个人 另其=t 那么出局后,新的庄家 就是这一局的第t+1 个人 那么第j个人就变成了新的一局的第 (j-t+i)%i 个人 所以,转移方程为 dp[i][j]= Σ dp[i-1][(j-t+i)%i] /m…
[JLOI2013]卡牌游戏 概率DP 题面 \(dfs\)复杂度爆炸,考虑DP.发现决策时,我们只用关心当前玩家是从庄家数第几个玩家与当前抽到的牌是啥.于是设计状态\(f[i][j]\)表示有\(i\)个人时,从庄家数第\(j\)个人的胜率.又因为此时终态确定\(f[1][1]=1\)(只有一个人时那个人胜率为100%),所以倒推回去. 转移时,枚举抽到的牌,算出从庄家数第\(t\)个会出局,那么下一局庄家就是第\(t+1\)个,当前局第\(j\)个就是下一局的第\(j-t(t< j)\)或\…