zoukankan      html  css  js  c++  java
  • HDU4576 Robot(概率)

    题意

    抄袭自https://www.cnblogs.com/Paul-Guderian/p/7624039.html

     多组输入n,m,l,r。表示在一个环上有n个格子。接下来输入m个w表示连续的一段命令,每个w表示机器人沿顺时针或者逆时针方向前进w格,已知机器人是从1号点出发的,输出最后机器人停在环上[l,r]区间的概率。n(1≤n≤200) ,m(0≤m≤1,000,000)。

    Sol

    无脑概率dp

    $f[i][j]$表示第$i$轮,在$j$位置的概率

    转移的时候枚举下一轮往哪儿走

    最后把$(l, r)$内的加起来即可

    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int MAXN = 201;
    int N, M, l, r;
    double f[2][MAXN];
    int get(int x) {
        if(x <= 0) x += N;
        if(x > N)  x -= N;
        return x;
    }
    int main() {
        while(scanf("%d %d %d %d", &N, &M, &l, &r)) {
            memset(f, 0, sizeof(f));
            if(!N && !M && !l && !r) break;
            int o = 0;
            f[o][1] = 1;
            for(int i = 1; i <= M; i++) {
                o ^= 1;
                int x; scanf("%d", &x); x %= N;
                for(int j = 1; j <= N; j++) 
                    f[o][j] = (f[o ^ 1][get(j - x)] + f[o ^ 1][get(j + x)]) / 2;
            }
            double ans = 0;
            for(int i = l; i <= r; i++) ans += f[o][i];
            printf("%.4lf
    ", ans);
        }
        return 0;
    }
  • 相关阅读:
    nth_element 使用方法
    Codeforces-1326E Bombs
    GDB下调试查看数组部分内容
    0930,主外键设置
    0928,数据库
    0924,函数返回多个值
    0921,函数 枚举
    0920,结构体
    0918,练习题
    0916,双色球练习题
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/9521654.html
Copyright © 2011-2022 走看看