第一道期望题好像是?还是对这类题目的做法启发比较大的quqqqqq 正解:概率dp 解题报告: 先港下,学到的一个算是结论的玩意儿: 概率正推期望逆推 很多时候正推期望是很麻烦的,但是逆推回去就会,简单很多(比如这题! ↑ 这是假的,,,正逆推都想下就好 然后就港下我对这题的解法的理解放下代码就可以over辽! 昂首先其实我想到的是正推,毕竟之前并没有做这类题目的经验,理所当然就觉得这么顺着推下去就好辽.然后码码码码完辽我才发现这样不对啊,,,我还要记录哪些人被淘汰了鸭,那些人就不能计入bala…
题目链接 这绝壁是道紫难度的题 请移步xyz32678的题解. 设f[i][j]是有i个人参加了游戏,1是庄家,最后j胜出的概率. 我们可以发现,这个游戏影响胜出的概率的只有庄家的相对位置和人数,跟玩家的具体编号是无关的. 于是我们可以枚举D,表示庄家目前抽到的牌值为D. 则有if(d>j) f[i][j]+=f[i-1][i-d+1]/m if(d<j) f[i][j]+=f[i-1][j-d]/m 这样子.最后f[n][i]就是玩家胜出的概率. 发现写题解的过程有助于理解题解…… 代码放上…
BZOJ_3191_[JLOI2013]卡牌游戏_概率DP Description   N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把卡片上的数字向所有玩家展示,然后按顺时针从庄家位置数第X个人将被处决即退出游戏.然后卡片将会被放回卡牌堆里并重新洗牌.被处决的人按顺时针的下一个人将会作为下一轮的庄家.那么经过N-1轮后最后只会剩下一个人,即为本次游戏的胜…
题目 传送门:QWQ 分析 算是概率dp不错的题. $ dp[i][j] $表示有i个人时,这i个人中的第j个获胜的概率. 我们把i从1推到n,那么答案就是$ dp[n][i] $ 然后我们规定,第一个人就是庄. 然后我们枚举每个卡片tmp. $ dp[i][j]=dp[i][j] + dp[i-1][j-tmp]/m $ 如果$ tmp>j $,那么也一样推一推就ok了. 代码 #include <bits/stdc++.h> using namespace std; ; int a[…
链接 题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把卡片上的数字向所有玩家展示,然后按顺时针从庄家位置数第X个人将被处决即退出游戏.然后卡片将会被放回卡牌堆里并重新洗牌.被处决的人按顺时针的下一个人将会作为下一轮的庄家.那么经过N-1轮后最后只会剩下一个人,即为本次游戏的胜者.现在你预先知道了总共有M张卡片,也知道每张卡片上的数字.现在你需要确…
题面 传送门 题解 不知道概率生成函数是什么的可以看看这篇文章,题解也在里面了 //minamoto #include<bits/stdc++.h> #define R register #define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i) #define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i) #define go(u) for(int i=head[u],v=e[i].v;i;i=e[…
题目 输入格式 输入仅有一行,包含两个正整数 q, n,分别表示问题编号以及叶结点的个数. 输出格式 输出仅有一行,包含一个实数 d,四舍五入精确到小数点后 6 位.如果 q = 1,则 d 表示叶结点平均深度的数学期望值:如果 q = 2,则 d 表示树深度的数学期望值. 输入样例 1 4 输出样例 2.166667 提示 题解 第一问比较简单,我们设\(f[i]\)表示第\(i\)次扩展的期望深度 那么 \[f[i] = \frac{f[i - 1] * (i - 2) + (f[i - 1…
P2059 [JLOI2013]卡牌游戏 题意 有\(n\)个人玩约瑟夫游戏,有\(m\)张卡,每张卡上有一个正整数,每次庄家有放回的抽一张卡,干掉从庄家起顺时针的第\(k\)个人(计算庄家),干掉的那位下家成为新庄家,初始庄家为1,最后活下的人胜利,求每个人获胜概率. 约瑟夫类型的题目有个套路,以庄家为相对位置进行重新编号. 可以进行dp \(dp_{i,j}\)表示第\(i\)轮(倒着数的)距离庄家为\(j\)的人的获胜概率,这样就可以很简单的转移了 复杂度\(O(n^2m)\) Code:…
[JLOI2013]卡牌游戏 概率DP 题面 \(dfs\)复杂度爆炸,考虑DP.发现决策时,我们只用关心当前玩家是从庄家数第几个玩家与当前抽到的牌是啥.于是设计状态\(f[i][j]\)表示有\(i\)个人时,从庄家数第\(j\)个人的胜率.又因为此时终态确定\(f[1][1]=1\)(只有一个人时那个人胜率为100%),所以倒推回去. 转移时,枚举抽到的牌,算出从庄家数第\(t\)个会出局,那么下一局庄家就是第\(t+1\)个,当前局第\(j\)个就是下一局的第\(j-t(t< j)\)或\…
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…