zoukankan      html  css  js  c++  java
  • HDU 4576

    http://acm.hdu.edu.cn/showproblem.php?pid=4576

    题意:给一个1-n的环,m次操作,每次操作顺时针或逆时针走w步,求最后落在[l,r]区间的概率

    dp[i][j]表示第i步走到点j的概率,很裸的概率dp,i太大,需要滚动数组

    时限4s,我的代码3984ms过的,有点悬

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <queue>
    #include <map>
    
    using namespace std;
    
    double dp[2][205];
    
    int main() {
        int n, m, l, r;
        while(~scanf("%d %d %d %d", &n, &m, &l, &r)) {
            if(!n && !m && !l && !r) break;
            memset(dp, 0, sizeof(dp) );
            dp[0][0] = 1.0;
            int f = 0;
            while(m--) {
                int w;
                scanf("%d", &w);
                for(int i = 0; i < n; i++)
                    dp[f ^ 1][i] = 0.0;
                for(int i = 0; i < n; i++) {
                    dp[f ^ 1][(i + w) % n] += 0.5 * dp[f][i];
                    dp[f ^ 1][(i - w + n) % n] += 0.5 * dp[f][i];
                }
                f ^= 1;
            }
            double ans = 0.0;
            for(int i = l; i <= r; i++)
                ans += dp[f][i-1];
            printf("%.4lf
    ", ans);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    第十周学习进度条
    第九周学习进度条
    Runner站立会议08
    Runner站立会议07
    构建之法阅读笔记02
    Runner站立会议04
    学习进度条
    Runner站立会议01
    进度条
    返回一个一维整数数组中最大子数组的和
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/4104423.html
Copyright © 2011-2022 走看看