bzoj 3191
非常好的一道题
看到这道题,肯定能想到概率dp,但是状态的设计与转移都是一个难点
如果正向模拟来设计状态,那么不难发现是很难以转移的
所以我们考虑反向模拟,用类似博弈的方法来转移
不难发现,如果只剩了最后一个人,那么这个人获胜的概率是1
而如果只剩两个人,我们完全可以通过摸牌的情况算出每个人的胜率(这里的胜率是先手和后手之分)
而如果剩三个人,我们发现通过摸牌会先淘汰一个人,然后就变成了两个人的局势,同时可以找出一个人在三人局中的位置和他在两人局中位置的对应关系
而这不就是一个转移吗
其余更多部分也就是同理啦
设状态为f[i][j]表示局中还剩i个人时,第j个人的胜率
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
using namespace std;
double f[55][55];
int n,m;
int a[55];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d",&a[i]);
}
f[1][1]=1;
for(int i=2;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
int temp=a[j]%i;
if(!temp)
{
temp=i;
}
for(int k=1;k<i;k++)
{
temp++;
if(temp>i)
{
temp=1;
}
f[i][temp]+=f[i-1][k]*(double)1.0/(double)m;
}
}
}
for(int i=1;i<=n;i++)
{
printf("%.2lf%% ",f[n][i]*100.0);
}
return 0;
}
bzoj 3191的更多相关文章
- [BZOJ 3191][JLOI 2013]卡牌游戏
觉得这题很有必要讲一下! 现在发现在做概率题,基本是向 dp 和 马尔可夫链 靠齐 但是这一题真是把我坑了,因为状态太多,马式链什么的直接死了 我一开始的想法就是用 f[i][j] 表示剩余 i 个人 ...
- bzoj 3191: [JLOI2013]卡牌游戏
Description N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X ...
- 卡牌游戏(bzoj 3191)
Description N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字 ...
- dp专练
dp练习. codevs 1048 石子归并 区间dp #include<cstdio> #include<algorithm> #include<cstring> ...
- 【BZOJ】3191 [JLOI2013]卡牌游戏(概率dp)
题目 传送门:QWQ 分析 算是概率dp不错的题. $ dp[i][j] $表示有i个人时,这i个人中的第j个获胜的概率. 我们把i从1推到n,那么答案就是$ dp[n][i] $ 然后我们规定,第一 ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
随机推荐
- CentOS6.8合并DVD1和DVD2作为本地yum源
转载自:http://www.study365.org/blog/45.html CentOS一般都会提供DVD1和DVD2两个镜像文件,形如CentOS-6.8-x86_64-bin-DVD1.is ...
- Java内存模型-final域的内存语义--没明白,预留以后继续理解
https://www.cnblogs.com/yuanfy008/p/9349275.html 来自 Java并发编程(1)-Java内存模型
- LR的损失函数&为何使用-log损失函数而非平方损失函数
https://blog.csdn.net/zrh_CSDN/article/details/80934278 Logistic回归的极大似然估计求解参数的推导: https://blog.csdn. ...
- java基础梳理--朝花夕拾(二)
1.Java语言语法规则和文件格式: 第一个Java程序:/** 第一个Java程序:控制台输出Hello world!*/public class Test{ //访问修饰符 class关键词 ...
- 【NLP CS224N笔记】Lecture 1 - Introduction of NLP
I. 什么是NLP NLP全称是Natural Language Processing,即自然语言处理,这是一门计算机科学.人工智能以及语言学的交叉学科. NLP涉及的几个层次由下图所示.可以看到输入 ...
- QML 从入门到放弃
发现了一个问题: QQuickView only supports loading of root objects that derive from QQuickItem. If your examp ...
- 在Apache Struts中利用OGNL注入
前言 本文简要介绍了Apache Struts的OGNL注入缺陷,文章中介绍使用简单的应用程序复现OGNL注入.深入研究针对公共漏洞,并理解这类漏洞. 内容 安装Apache Tomcat服务器(入门 ...
- Python-简单打印进度条
import sys,time ): sys.stdout.write("#") sys.stdout.flush() time.sleep(0.1) #sys.stdout.wr ...
- 查询tensorflow中的函数用法
一下均在ubuntu环境下: (1)方法一,使用help()函数: 比如对于tf.placeholder(),在命令行中输入import tensorflow as tf , help(tf.plac ...
- css利用padding百分比实现图片自适应高度
应用场景 宽高比率,实现图片自适应高度,防止图片加载过程高度为0,加载完图片高度撑起,它下面的div抖动问题 重点:CSS百分比padding都是相对宽度计算的 <div class=" ...