正解:概率dp

解题报告:

传送门

考虑倒推,因为发现关于什么淘不淘汰之类的,如果我们倒推就完全不要考虑辣.

于是设$f_{i,j}$表示当前剩余$i$个人,从庄家数第$j$个人的获胜概率.

初始化是$f_{1,1}=100$(意义为$100/%$.没什么意义只是因为我当初写的时候比较呆而已.$QwQ$

然后关于转移,首先发现我们并不在意庄家是谁,有意义的只是相对位置,是趴

首先两个人的时候

第一个人是庄家,那我们根据牌$mod\ 2$的余数进行分类,然后就能得到两类,一类能让$1$号玩家(也就是庄家赢),一类能让$2$号玩家(也就是庄家的下一个人赢),这时候我们就能得到$f_{2,1},f_{2,2}$的答案辽

然后再看三个人的时候

那就根据$mod\ 3$的余数分类

如果余数$=0$,庄家死了,庄家之后的玩家就变成了上一层我们讨论的状态,即庄家+1变成了上一层的庄家,他的概率就加上.让庄家死的概率乘以上一层他是庄家的时候赢的概率;庄家+2变成上一层庄家的下一个,他的概率就加上.让庄家死的概率乘以上一层他是庄家的下一个人赢的概率

余数等于$1,2$差不多转移下就成.

然后通过上面那个分类讨论事实上就已经可以知道这题转移了?然后就做完了$QwQ$

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rp(i,x,y) for(register ll i=x;i<=y;++i) ll n,m,card[];
double f[][]; ll read()
{
char ch=getchar();ll x=;bool y=;
while(ch!='-' && (ch>'' || ch<''))ch=getchar();
if(ch=='-')ch=getchar(),y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=getchar();
return y?x:-x;
}
void add(ll &x,ll y){x++;if(x>y)x=;} int main()
{
n=read();m=read();
rp(i,,m)card[i]=read();f[][]=;
rp(i,,n)
rp(j,,m)
{
ll q=(!card[j]%i)?j:card[j]%i;
rp(k,,i-){add(q,i);f[i][q]+=(double)f[i-][k]/(double)m;}
}
rp(i,,n)printf("%.2lf%% ",f[n][i]);
return ;
}

洛谷P2059 卡牌游戏 [JLOI2013] 概率dp的更多相关文章

  1. 【Luogu】P2059卡牌游戏(概率DP)

    题目链接 这绝壁是道紫难度的题 请移步xyz32678的题解. 设f[i][j]是有i个人参加了游戏,1是庄家,最后j胜出的概率. 我们可以发现,这个游戏影响胜出的概率的只有庄家的相对位置和人数,跟玩 ...

  2. BZOJ_3191_[JLOI2013]卡牌游戏_概率DP

    BZOJ_3191_[JLOI2013]卡牌游戏_概率DP Description   N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随 ...

  3. 【BZOJ】3191 [JLOI2013]卡牌游戏(概率dp)

    题目 传送门:QWQ 分析 算是概率dp不错的题. $ dp[i][j] $表示有i个人时,这i个人中的第j个获胜的概率. 我们把i从1推到n,那么答案就是$ dp[n][i] $ 然后我们规定,第一 ...

  4. 【概率DP】$P2059$ 卡牌游戏

    链接 题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家 ...

  5. 洛谷P3706 [SDOI2017]硬币游戏(概率生成函数+高斯消元)

    题面 传送门 题解 不知道概率生成函数是什么的可以看看这篇文章,题解也在里面了 //minamoto #include<bits/stdc++.h> #define R register ...

  6. 洛谷3830 [SHOI2012]随机树 【概率dp】

    题目 输入格式 输入仅有一行,包含两个正整数 q, n,分别表示问题编号以及叶结点的个数. 输出格式 输出仅有一行,包含一个实数 d,四舍五入精确到小数点后 6 位.如果 q = 1,则 d 表示叶结 ...

  7. 洛谷 P2059 [JLOI2013]卡牌游戏 解题报告

    P2059 [JLOI2013]卡牌游戏 题意 有\(n\)个人玩约瑟夫游戏,有\(m\)张卡,每张卡上有一个正整数,每次庄家有放回的抽一张卡,干掉从庄家起顺时针的第\(k\)个人(计算庄家),干掉的 ...

  8. [JLOI2013]卡牌游戏 概率DP

    [JLOI2013]卡牌游戏 概率DP 题面 \(dfs\)复杂度爆炸,考虑DP.发现决策时,我们只用关心当前玩家是从庄家数第几个玩家与当前抽到的牌是啥.于是设计状态\(f[i][j]\)表示有\(i ...

  9. bzoj千题计划202:bzoj3191: [JLOI2013]卡牌游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=3191 每个人获胜的概率只与其在排列中与庄家的相对位置有关 dp[i][j] 还剩i个人时,从庄家数第 ...

随机推荐

  1. [Z]修炼成C++高手必看的C++书单

    增添于网上的一些书单: C++/OPP/OOD系列: 层级一:语法/语意(C++) [Lippman2000] Essential C++ Essential C++,by Stanley B. Li ...

  2. iis下的php环境的配置

    1. 参考园友文章: http://www.cnblogs.com/zengxiangzhan/archive/2010/03/05/1679286.html 2.另外还可以参考一下文章: http: ...

  3. Hadoop计算平均值【转】

    file1.txt a 1b 2a 3b 3a 5b 7c 3c 5 file2.txt a 1b 7c 5a 1c 3 结果: a 2.2b 4.75c 4.0 代码: package org.ap ...

  4. C/C++获取文件后缀名并且比较

    以下这段是VC中过去文件后缀名的方法 1.CString GetSuffix(CString strFileName) {         return strFileName.Right(strFi ...

  5. PHP 二叉树 二叉排序树实现

    <?php /** * PHP 二叉树 * @author : xiaojiang 2014-01-01 * */ class Tree { protected $k = null; prote ...

  6. Git学习之Git恢复进度

    ================================================ 继续暂存区未完成的实践 ======================================= ...

  7. 浏览器 User Agent字符串列表

    http://www.73207.com/useragent/ http://www.73207.com/useragent/pages/internet-2520explorer/index.htm ...

  8. 用CornerStone配置SVN,HTTP及svn简单使用说明

    转载 http://my.oschina.net/joanfen/blog/194491 一.下载地址 CornerStoneV2.6:http://pan.baidu.com/s/1qWEsEbM密 ...

  9. Struts2之web元素访问与模板包含与默认Action使用

    上一篇为大家介绍了如何使用Action进行参数接收,以及简单的表单验证,本篇为大家介绍一下关于Action访问web元素的三种方式(request.session.application):模板包含( ...

  10. 修改nose_html_reporting,解决输出带中文时,不能生成html文件

    在使用nose_html_reporting时,如果测试输出中带有中文,那么html输出会失败,提示如下: 提示'ascii'编码码失败 这是因为在string.IO中取回来的数据与当前脚本中声明的编 ...