【bzoj3191】[JLOI2013]卡牌游戏 概率dp
题目描述
输入
输出
样例输入
5 5
2 3 5 7 11
样例输出
22.72% 17.12% 15.36% 25.44% 19.36%
题解
概率dp
设$f[i][j]$表示$i$个人游戏$j$获胜的概率,那么考虑转移:
枚举选择了哪张卡片,然后看$j$是否被踢出,如果没被踢出则再计算它是新一局游戏的第几个即可。
算第几个时略微有点复杂,可以在纸上画画,推一下可知如果踢出$t$,那么新一轮$j$的位置为$(j-t+i-1)\%i+1$。
即状态转移方程为$f[i][j]=\sum\limits_{k=1}^m[t\neq j]·\frac{f[i - 1][(j-t+i-1)\%i+1]}m$。
最后的答案就是$f[n][i]$,注意格式问题,最后不能有空格。
时间复杂度$O(n^3)$
#include <cstdio>
#define N 55
double f[N][N];
int a[N];
int main()
{
int n , m , i , j , k , t;
scanf("%d%d" , &n , &m);
for(i = 1 ; i <= m ; i ++ ) scanf("%d" , &a[i]);
f[1][1] = 100;
for(i = 2 ; i <= n ; i ++ )
for(j = 1 ; j <= i ; j ++ )
for(k = 1 ; k <= m ; k ++ )
if((t = (a[k] - 1) % i + 1) != j)
f[i][j] += f[i - 1][(j - t + i - 1) % i + 1] / m;
for(i = 1 ; i < n ; i ++ ) printf("%.2lf%% " , f[n][i]);
printf("%.2lf%%\n" , f[n][n]);
return 0;
}
【bzoj3191】[JLOI2013]卡牌游戏 概率dp的更多相关文章
- [bzoj3191][JLOI2013][卡牌游戏] (概率dp)
Description N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字 ...
- [JLOI2013]卡牌游戏 概率DP
[JLOI2013]卡牌游戏 概率DP 题面 \(dfs\)复杂度爆炸,考虑DP.发现决策时,我们只用关心当前玩家是从庄家数第几个玩家与当前抽到的牌是啥.于是设计状态\(f[i][j]\)表示有\(i ...
- [luogu2059 JLOI2013] 卡牌游戏 (概率dp)
题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把 ...
- 洛谷 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$ 个人的答 ...
- bzoj千题计划202:bzoj3191: [JLOI2013]卡牌游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=3191 每个人获胜的概率只与其在排列中与庄家的相对位置有关 dp[i][j] 还剩i个人时,从庄家数第 ...
- [bzoj3191] [JLOI2013]卡牌游戏
概率DP. 首先由题解可得>_<,胜出概率只与剩余人数.与庄家的相对位置有关. 所以设f[i][j]表示剩下i个人,从庄家开始第j个人的胜利概率... 根据卡牌一通乱搞即可... #inc ...
- bzoj3191卡牌游戏——概率DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3191 不用在意每个人的编号,只需看他们相对于庄家的位置即可: 所以设计状态f[i][j]为还 ...
随机推荐
- Percona-Toolkit工具包之pt-archiver
Preface There's a common case that we neet to archive amount of records in some tables to a ...
- bootStrap的轮播
1.1如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- 获取cookie,设置cookie,删除cookie
//获取cookie export const getCookie = (name) => { var arr, reg = new RegExp("(^| )" + nam ...
- python集合、函数实例
集合 1.list ==>允许重复的集合,可修改 2.tuple ==>允许重复的集合,不可修改 3.dict ==> 4.set ==>不允许重复的集合,相当于不可重复的列表 ...
- Leecode刷题之旅-C语言/python-69x的平方根
/* * @lc app=leetcode.cn id=69 lang=c * * [69] x 的平方根 * * https://leetcode-cn.com/problems/sqrtx/des ...
- 50条大牛C++编程开发学习建议
每个从事C++开发的朋友相信都能给后来者一些建议,但是真正为此进行大致总结的很少.本文就给出了网上流传的对C++编程开发学习的50条建议,总结的还是相当不错的,编程学习者(不仅限于C++学习者)如果真 ...
- 素数环 南阳acm488(回溯法)
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简 ...
- PHP环境搭建-记录
转于 http://jingyan.baidu.com/article/fcb5aff797ec41edaa4a71c4.html php5.5 做了大量的更新,在与apache搭配的时候如何选择也很 ...
- 解决 Python2 和 Python3 的共存问题
首先安装两种版本的Python 进入系统属性更改环境变量 将两个版本的安装路径找出. 添加至PATH中,变量之间用分号隔开. D:\Python36\Scripts\;D:\Python36\;D:\ ...
- HyperLedger Fabric 1.4 架构(6.2)
6.2.1 架构演进 Fabric架构经历了0.6版本到1.0版本的演进,架构上进行了重大改进,从0.6版本的结构简单演进到可扩展.多通道的设计,在架构上有了质的飞跃:从1.0版本以后,架 ...