【BZOJ】3191 [JLOI2013]卡牌游戏(概率dp)
题目
传送门: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)的更多相关文章
- [JLOI2013]卡牌游戏 概率DP
		[JLOI2013]卡牌游戏 概率DP 题面 \(dfs\)复杂度爆炸,考虑DP.发现决策时,我们只用关心当前玩家是从庄家数第几个玩家与当前抽到的牌是啥.于是设计状态\(f[i][j]\)表示有\(i ... 
- 【bzoj3191】[JLOI2013]卡牌游戏  概率dp
		题目描述 n个人围成一圈玩游戏,一开始庄家是1.每次从m张卡片中随机选择1张,从庄家向下数个数为卡片上的数的人,踢出这个人,下一个人作为新的庄家.最后一个人获胜.问每个人获胜的概率. 输入 第一行包括 ... 
- [luogu2059 JLOI2013] 卡牌游戏 (概率dp)
		题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把 ... 
- bzoj 3191: [JLOI2013]卡牌游戏
		Description N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X ... 
- [bzoj3191][JLOI2013][卡牌游戏] (概率dp)
		Description N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字 ... 
- 洛谷 P2059 [JLOI2013]卡牌游戏(概率dp)
		题面 洛谷 题解 \(f[i][j]\)表示有i个人参与游戏,从庄家(即1)数j个人获胜的概率是多少 \(f[1][1] = 1\) 这样就可以不用讨论淘汰了哪些人和顺序 枚举选庄家选那张牌, 枚举下 ... 
- P2059 [JLOI2013]卡牌游戏  概率DP
		link:https://www.luogu.org/problemnew/show/P2059 题意: 有n个人,类似约瑟夫环的形式踢人,但是报的数是不同的,是在给定的许多数中随机抽取,问最后第i个 ... 
- Luogu 2059 [JLOI2013]卡牌游戏 - 概率DP
		Solution 设状态 $F[i][j] $为 还剩余 $i$ 个人时, 第 $j$ 个人 的胜率. 边界: $F[1][1] = 1$(只剩下一个人了). 这样设置状态就能使 $i-1$ 个人的答 ... 
- bzoj3191卡牌游戏——概率DP
		题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3191 不用在意每个人的编号,只需看他们相对于庄家的位置即可: 所以设计状态f[i][j]为还 ... 
随机推荐
- Java中的基本数据类型及其封装类
			Java中的数据类型有两种,基本数据类型和引用数据类型,引用数据类型的创建是 需要去new一个对象,该对象的内存分配在堆区,同时栈区会保存一个指向该对象的引用, 但是对于一些简单数据的创建,用new的 ... 
- 不能用Xming连接到 Centos 7
			修改/etc/gdm/custom.conf 之后, Centos 6是没有问题的. 可是Centos 7 不行. 根据这个连接,运行firewall-config,把网络改到trusted级别, 能 ... 
- 【原创】遇到:Invalid layout of java.lang.String at value 这样的问题,该怎么办呢?
			Invalid layout of java.lang.String at value## A fatal error has been detected by the Java Runtime En ... 
- 【转】ubuntu下修改文件夹权限
			常用方法如下: sudo chmod 600 ××× (只有所有者有读和写的权限)sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)sudo chmod 700 ××× ... 
- UVA-1601 The Morning after Halloween(BFS或双向BFS)
			题目大意:在一张图中,以最少的步数将a,b,c移到对应的A,B,C上去.其中,每个2x2的方格都有障碍并且不能两个小写字母同时占据一个格子. 题目分析:为避免超时,先将图中所有能联通的空格建起一张图, ... 
- Mybatis整合Spring -- typeAliasesPackage
			Mybatis整合Spring 根据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持. 因此由M ... 
- 知识梳理——HTML篇
			浏览器内核: IE: trident Fixfox: gecko Safari: webkit Opera: 以前是presto,现已改用Google Chrome的Blink Chrome: Bli ... 
- POJ 1321 棋盘问题 dfs 难度:0
			http://poj.org/problem?id=1321 注意是在'#'的地方放棋子 矩阵大小不过8*8,即使是8!的时间复杂度也足以承受,可以直接dfs求解 dfs时标注当前点的行和列已被访问, ... 
- C语言对表达式的求值顺序不是明确规定的
			讨论区看到的 WA来自那些递归下降求解的代码. 第一种情况,使用|| 和 &&: 例如s为所给串 int getval() { switch(s[c_s++]) { case 'p': ... 
- rabbitmq 对多服务器p2p模式配置的一个测试
			一直对rabbitmq p2p 模式的多服务器下做相同配置的 各个服务器数据接受情况比较好奇 今天有空测试了下 xml 文件 <?xml version="1.0" enco ... 
