lightoj 1030 Discovering Gold
来源:互联网 发布:mac大写字母自动切换 编辑:程序博客网 时间:2024/05/23 21:23
题意:
有一个直线的金矿,每个点有一定数量的金子,
你从0开始,每次扔个骰子,扔出几点就走几步,然后把那个点的金子拿走;
如果扔出的骰子超出了金矿,就重新扔,知道你站在最后一个点;
问拿走金子的期望值是多少。
思路:
首先我们假设你现在站在第i个点,且从这个点开始走,
那么这个点的期望p[i] = p[i +1] /6 + p[i + 2] / 6 + p[i + 3] /6 + p[i + 4] / 6 + p[i + 5] / 6 + p[i + 6] / 6 + p[i];
p[i] 初值就是这个点的金子数量,意思就是这个点的期望,是往后有6种情况,每种的六分之一;
当然情况数少于6的时候要处理一下;
所以从最后一个点往前算一边,就能的的出答案。
参考博客:http://blog.csdn.net/yeyeyeguoguo/article/details/46355873
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N = 105;double num[N];double p[N];int n;int main (){ int t; int cas = 1; scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i = 0; i < n; i++) { scanf("%lf",&num[i]); } p[n - 1] = num[n - 1]; for(int i = n - 2; i >= 0; i--) { p[i] = num[i]; int dis = 6; if(n - 1 - i < 6) dis = n - 1 - i; for(int j = 1; j <= dis; j++) { p[i] += (p[i + j] / dis); } } printf("Case %d: %.10lf\n",cas++, p[0]); }}
0 0
- LightOJ 1030 Discovering Gold
- LightOJ 1030-Discovering Gold
- LightOJ 1030 Discovering Gold
- lightoj 1030 Discovering Gold
- lightoj 1030 Discovering Gold
- LightOJ 1030 Discovering Gold
- Lightoj 1030 - Discovering Gold
- LightOj-1030-Discovering Gold
- lightoj 1030 Discovering Gold[ 期望 ]
- LightOJ - 1030 Discovering Gold 期望
- LightOJ 1030 Discovering Gold【概率】
- LightOJ 1030 Discovering Gold 概率
- lightoj 1030 - Discovering Gold 【期望】
- LightOJ 1030 Discovering Gold(期望)
- 1030 - Discovering Gold (lightoj 1030 概率DP)
- lightoj 1030 Discovering Gold (基础概率dp)
- 【期望dp】LightOJ 1030 Discovering Gold
- LightOJ 1030 - Discovering Gold (期望dp)
- Git SSH Key 生成步骤
- linux内核增加atheros wifi驱动
- HDU1232 畅通工程
- 5种单例模式--初学者版
- Could not load the Tomcat server configuration
- lightoj 1030 Discovering Gold
- ArchLinux折腾记
- 基于C语言的动态沙漏
- 斜率优化 Snowdrop修长廊 scu dp练习B题
- js 一段代码获取元素class样式
- IOS-swift 动画01
- HDU 1023 Train Problem II Catalan数(卡特兰数)
- C++第5次上机实验
- 深入java学习之java面向对象程序设计