题目

传送门: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;
const int maxn=;
int a[maxn];
double dp[maxn][maxn];
void plu(int i){int x;scanf("%d",&x);a[i]=x;}
int main(){
int n,M;scanf("%d%d",&n,&M);
double m=M;
memset(dp,,sizeof(dp));
dp[][]=1.0;
for(int i=;i<=m;i++) plu(i);
for(int i=;i<=n;i++){
for(int j=;j<=i;j++){
for(int k=;k<=m;k++){
int t=a[k]%i; if(!t) t=i;
if(j>t) dp[i][j]+=dp[i-][j-t]/m;
if(j<t) dp[i][j]+=dp[i-][i-t+j]/m;
}
}
}
for(int i=;i<=n;i++){
dp[n][i]*=100.0;
printf("%.2f",dp[n][i]);putchar('%');putchar(' ');
}
return ;
}

【BZOJ】3191 [JLOI2013]卡牌游戏(概率dp)的更多相关文章

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

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

  2. 【bzoj3191】[JLOI2013]卡牌游戏 概率dp

    题目描述 n个人围成一圈玩游戏,一开始庄家是1.每次从m张卡片中随机选择1张,从庄家向下数个数为卡片上的数的人,踢出这个人,下一个人作为新的庄家.最后一个人获胜.问每个人获胜的概率. 输入 第一行包括 ...

  3. [luogu2059 JLOI2013] 卡牌游戏 (概率dp)

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

  4. bzoj 3191: [JLOI2013]卡牌游戏

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

  5. [bzoj3191][JLOI2013][卡牌游戏] (概率dp)

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

  6. 洛谷 P2059 [JLOI2013]卡牌游戏(概率dp)

    题面 洛谷 题解 \(f[i][j]\)表示有i个人参与游戏,从庄家(即1)数j个人获胜的概率是多少 \(f[1][1] = 1\) 这样就可以不用讨论淘汰了哪些人和顺序 枚举选庄家选那张牌, 枚举下 ...

  7. P2059 [JLOI2013]卡牌游戏 概率DP

    link:https://www.luogu.org/problemnew/show/P2059 题意: 有n个人,类似约瑟夫环的形式踢人,但是报的数是不同的,是在给定的许多数中随机抽取,问最后第i个 ...

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

    Solution 设状态 $F[i][j] $为 还剩余 $i$ 个人时, 第 $j$ 个人 的胜率. 边界: $F[1][1] = 1$(只剩下一个人了). 这样设置状态就能使 $i-1$ 个人的答 ...

  9. bzoj3191卡牌游戏——概率DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3191 不用在意每个人的编号,只需看他们相对于庄家的位置即可: 所以设计状态f[i][j]为还 ...

随机推荐

  1. 几个主流的Java连接池整理

    池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对 ...

  2. JAVA基础知识详解

    1. JVM是什么 JVM是Java Virtual Mechine的缩写.它是一种基于计算设备的规范,是一台虚拟机,即虚构的计算机. JVM屏蔽了具体操作系统平台的信息(显然,就像是我们在电脑上开了 ...

  3. Xcode6中手动添加Precompile Prefix Header

    Xcode5中创建一个工程的时候,系统会自动创建一个以以工程名为名字的pch(Precompile Prefix Header)文件,开发的过程中可以将广泛使用的头文件以及宏包含在该文件下,编译器就会 ...

  4. HDU 1029 基础dp

    题目链接:Ignatius and the Princess IV 大意:就是在N个数里找出唯一一个至少出现过(N+1)/ 2 次的数. 1 <= N <= 999999. hash: / ...

  5. C++设计模式之享元模式

    概述 想想我们编辑文档用的wps,文档里文字很多都是重复的,我们不可能为每一个出现的汉字都创建独立的空间,这样代价太大,最好的办法就是共享其中相同的部分,使得需要创建的对象降到最小,这个就是享元模式的 ...

  6. android 知识小结-1

    Java哪些数据结构是线程安全的,CurrentHashMap的原理 ConcurrentHashMap.ConcurrentSkipListMap.ConcurrentSkipListSet.Con ...

  7. PowerDesigner15.1使用技巧总结

    1.  生成sql脚本 Database→Generate Database 选择要输出的文件路径,即文件存储路径,并根据需要修改文件名,单击确定后便会生成sql脚本.   在Options选项卡里, ...

  8. 利用Web Services开发分布式应用

    一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services 二.Web Services 详细介绍 2.1 We ...

  9. python 获取excel文件内sheet名称列表

    xl = pd.ExcelFile('foo.xls') xl.sheet_names # see all sheet names xl.parse(sheet_name) # read a spec ...

  10. leetcode:Insert Sort List

    问题描写叙述 对一个单链表进行插入排序,head指向第一个结点. 代码 /** * Definition for singly-linked list. * struct ListNode { * i ...