题意:

最近西雅图的高中校园里流行这样一个游戏。

我们有一个骰子,这个骰子有M个面,分别写着1..M,并且是个公平的骰子,换句话说,一次投掷时每个面朝上的概率是相同的。

游戏的组织者使用这个骰子进行N次投掷,并且告诉玩家点数v出现了至少一次。那么玩家需要猜测N次投掷的点数之和。如果猜对了,就赢得了这个游戏。

小宇也喜欢玩这个游戏。在一次游戏中,她猜测了一个正整数sum,于是她想知道猜对的概率是多少。

分析:

设f[i][j][0/1]表示猜了i次,和为j,有(1)没有(0)猜中过v的概率。

转移很简单:

\(f[i][j][k == v] += f[i - 1][j - k][0]\)

\(f[i][j][1] += f[i - 1][j - k][1]\)

最后答案为: \(\frac{f[n][sum][1]}{\sum{f[n][j][1]}}\)

code

#include<bits/stdc++.h>
using namespace std;
int n, m, sum, v;
double tot, f[60][2600][2]; int main(){
freopen("h.in", "r", stdin);
scanf("%d%d%d%d", &n, &m, &v, &sum);
f[0][0][0] = 1;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n * m; j++){
for(int k = 1; k <= m; k++){
f[i][j][k == v] += 1.0*f[i - 1][j - k][0] / (1.0*m);
f[i][j][1] += 1.0*f[i - 1][j - k][1] / (1.0*m);
}
}
}
for(int i = 1; i <= n * m; i++) tot += f[n][i][1];
printf("%.8f", f[n][sum][1] / tot);
return 0;
}

最新文章

  1. Vim 快速上手
  2. 使用pyinstaller打包Python应用,生成EXE执行文件
  3. SystemErrorCodes
  4. PBOC金融IC卡,卡片与终端交互的13个步骤,简介-第三组
  5. 三种Singleton的实现方式
  6. JS浮点数的加减乘除运算
  7. codeforces 485B Valuable Resources 解题报告
  8. 【jmeter】属性和变量
  9. vs2010 开发过程中调试时 有错误不中断
  10. Remark of BLENDFUNCTION from MSDN
  11. linux上ln命令详细说明
  12. ios 以NSObject为父类的各类间继承关系
  13. Gulp browserify livereload
  14. StreamReader 读取文本文件乱码问题
  15. [算法] dijkstra单源无负权最小路径算法
  16. Vue.js高仿饿了么WebApp
  17. React,Node.js,Vue,Webkit技术内幕
  18. 『高次同余方程 Baby Step Giant Step算法』
  19. Metasploit Framework(2)Exploit模块、Payload使用
  20. python中的各种锁

热门文章

  1. action中json的应用
  2. SQL server 2012 安装SQL2012出现报错: 启用 Windows 功能 NetFx3 时出错
  3. Incapsula免费日本CDN加速和CDNZZ香港CDN节点加速
  4. 课程与教学管理系统(CMS):Sakai
  5. Android网络框架OkHttp之get请求(源码初识)
  6. Android通过startService播放背景音乐简单演示样例
  7. js进阶 13-11/12 jquery如何实现折叠导航
  8. 接口如何使用(以笑话大全api为例)
  9. (转)c运行库、c标准库、windows API的区别和联系
  10. 最新GitHub新手使用教程(Windows Git从安装到使用)——详细图解