• LightOJ 1030 Discovering Gold 期望


      题目链接: https://vjudge.net/contest/76505#problem/B

      题目描述: 有一个直线的金矿,每个点有一定数量的金子,你从0开始,每次扔个骰子,扔出几点就走几步,然后把那个点的金子拿走,如果扔出的骰子超出了金矿,就重新扔,知道你站在最后一个点,问拿走金子的期望值是多少?

      解题思路: 这道题我们倒着来推, 我们设我们当前的位置是i ,  期望是f[i], 显然当位于最后一个点的时候f[i] = a[i],  在普遍的情况下, f[i] 可以走到后面的六个点, 每个点的概率是1/6, 所以f[i] = f[i+1 ~ i+6] / 6 + a[i] , 我们从最后一个点推回来则 f[0]即为所求

      代码: 

    #include <iostream>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <cstring>
    #include <iterator>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    #include <deque>
    #include <map>
    #include <set>
    #include <queue>
    #define lson l, m, rt<<1
    #define rson m+1, r, rt<<1|1
    #define mem0(a) memset(a,0,sizeof(a))
    #define mem1(a) memset(a,-1,sizeof(a))
    #define sca(x) scanf("%d",&x)
    //#define de printf("=======
    ")
    typedef long long ll;
    using namespace std;
    
    #include <stdio.h>
    #include <math.h>
    const int maxn = 1e2+10;
    int n, a[maxn];
    double f[maxn];
    
    int main() {
        int t, cas = 1;
        scanf("%d", &t);
        while (t--) {
            mem0(a);
            mem0(f);
            scanf("%d", &n);
            for (int i = 0; i < n; i++)
                scanf("%d", &a[i]);
            f[n - 1] = a[n - 1];
            for (int i = n - 2; i >= 0; i--) {
                f[i] = 0;
                int cnt = n - i - 1;
                if (cnt > 6)
                    cnt = 6;
                for (int j = i + 1; j <= i + cnt; j++)
                    f[i] += f[j];
                f[i] = f[i] / cnt + a[i];
            }
            printf("Case %d: %.10lf
    ", cas++, f[0]);
        }
        return 0;
    }
    View Code

      思考: 自己又想了一下为什么不能从前向后推,想不明白啊......自己就是从前往后推的结果一直错, 很迷

  • 相关阅读:
    使用字符流(Writer、Reader)完成对文件的读写操作
    Java中File类重修
    适配器模式学习
    oracle 新建数据库 ,新建用户
    8.19 extjs jar 包使用。
    8.15 session 有效时间, session在数据查询中最后不用
    8.15 自定义tr行 滚动 信息行的滚动
    8.15jsp document 头部声明 区别
    8.14 图片滚动无缝
    8.13Oracle新建用户、角色,授权
  • 原文地址:https://www.cnblogs.com/FriskyPuppy/p/7522232.html
Copyright © 2020-2023  润新知