Luogu 2059 [JLOI2013]卡牌游戏 - 概率DP
Solution
设状态 $F[i][j] $为 还剩余 $i$ 个人时, 第 $j$ 个人 的胜率。
边界: $F[1][1] = 1$(只剩下一个人了)。
这样设置状态就能使 $i-1$ 个人的答案 转移到 $i$ 个人的答案上。
最后输出 $F[N][i]$ 。
状态转移:
int tmp = (a[k] - ) % i + ;
if (tmp == j)
continue;
tmp = j - tmp;
tmp = (tmp % i + i) % i;
f[i][j] += 1.0 / m * f[i - ][tmp];
Code
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rd read()
#define db double
using namespace std; const int N = ; int n, m, a[N]; db f[N][N]; int read() {
int X = , p = ; char c = getchar();
for (; c > '' || c < ''; c = getchar())
if (c == '-') p = -;
for (; c >= '' && c <= ''; c = getchar())
X = X * + c - '';
return X * p;
} int main()
{
n = rd; m = rd;
for (int i = ; i <= m; ++i)
a[i] = rd;
f[][] = ;
for (int i = ; i <= n; ++i)
for (int j = ; j <= i; ++j)
for (int k = ; k <= m; ++k) {
int tmp = (a[k] - ) % i + ;
if (tmp == j)
continue;
tmp = j - tmp;
tmp = (tmp % i + i) % i;
f[i][j] += 1.0 / m * f[i - ][tmp];
}
printf("%.2lf%%", f[n][] * );
for (int i = ; i <= n; ++i)
printf(" %.2lf%%", f[n][i] * );
putchar('\n');
}
Luogu 2059 [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,则庄家首先把 ...
- [bzoj3191][JLOI2013][卡牌游戏] (概率dp)
Description N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字 ...
- P2059 [JLOI2013]卡牌游戏 概率DP
link:https://www.luogu.org/problemnew/show/P2059 题意: 有n个人,类似约瑟夫环的形式踢人,但是报的数是不同的,是在给定的许多数中随机抽取,问最后第i个 ...
- 洛谷 P2059 [JLOI2013]卡牌游戏(概率dp)
题面 洛谷 题解 \(f[i][j]\)表示有i个人参与游戏,从庄家(即1)数j个人获胜的概率是多少 \(f[1][1] = 1\) 这样就可以不用讨论淘汰了哪些人和顺序 枚举选庄家选那张牌, 枚举下 ...
- Luogu P2059 [JLOI2013]卡牌游戏
一道比较简单的概率DP 首先看到这种题目和数据范围,就要毫不犹豫地列DP方程: 我们令\(f_{i,j}\)表示还剩下i个人时编号为j的人的胜率,那么首先我们可以知道边界条件\(f_{1,1}=1\) ...
- BZOJ3191或洛谷2059 [JLOI2013]卡牌游戏
BZOJ原题链接 洛谷原题链接 我们可以倒着来\(DP\). 设\(f[i][j]\)表示剩余\(i\)个人,从庄家数起第\(j\)个人的胜率,设当前枚举到第\(k\)张牌,该情况下这一轮淘汰的位置为 ...
- bzoj3191卡牌游戏——概率DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3191 不用在意每个人的编号,只需看他们相对于庄家的位置即可: 所以设计状态f[i][j]为还 ...
随机推荐
- 判断素数(翁凯男神MOOC)
从2到x-1测试是否可以整除 int isPrime(int x); int main(int argc, char **argv) { int x; scanf("%d",&am ...
- ABAP表控件查询
1.准备工作 首先SE11自建一个数据库表(数据元素,域信息请提前建好) 2.编写代码 2.1 新建一个子屏幕 子屏幕中需新定义一个文本输入框,命名为:key_word,新建一个表控件,命名为tab, ...
- C# delegate (001)
背景:一直不是很理解C#中的委托,也不是很清楚委托应用的业务场景,有可能和自己一直做B/S有关 业务描述:C/S,父窗口打开子窗口,子窗口把自己文本框里的值传个父窗口的文本框. 子窗体代码: //定义 ...
- java方法中增加不固定参数
JDK1.5以上支持 一.定义方法 有时方法的参数个数不固定,可以使用...来省略个数,使用时直接遍历即可,例如下面的方法 public class hi { public void print(St ...
- Appium1.6 GUI界面介绍
Appium1.6安装详见随笔:http://www.cnblogs.com/meitian/p/7360017.html 下面具体介绍一下GUI界面 1.appium server配置页面 2. ...
- AdminLTE 动画时间
app.js AdminLTE.css
- 在Plesk安装PHP的Memcached扩展
默认情况下,Plesk的PHP没有Memcached扩展,需要自己安装. Plesk-without-memcached,在Plesk下安装PHP Memcached扩展 PHP Memcache是 ...
- oracle视图(转)
视图的概念 视图是基于一张表或多张表或另外一个视图的逻辑表.视图不同于表,视图本身不包含任何数据.表是实际独立存在的实体,是用于存储数据的基本结构.而视图只是一种定义,对应一个查询语句.视图的数据 ...
- Java07-java语法基础(六)面向对象
Java07-java语法基础(六)面向对象 一.格式化输出 System.out.printf(“%格式字符”,输出项); 1.格式字符: d --->int.byte.short ld -- ...
- http协议的学习
TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据.