zoukankan      html  css  js  c++  java
  • HDU 4576 Robot (概率DP)

    暴力DP求解太卡时间了...........写挫一点就跪了


    //hdu robot
    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <cstring>
    using namespace std;
    
    inline void RD(int &ret) {
        char c;
        do {
            c = getchar();
        } while(c < '0' || c > '9') ;
        ret = c - '0';
        while((c=getchar()) >= '0' && c <= '9')
            ret = ret * 10 + ( c - '0' );
    }
    
    int n,m,l,r,w;
    double dp[2][222]; //第i步操作在j点的概率
    int main() {
        while(scanf("%d%d%d%d",&n,&m,&l,&r) != EOF){
            if(n == 0 && m == 0 && l == 0 && r == 0) break;
            for(int i=0; i<n; i++) dp[0][i] = 0;
            dp[0][0] = 1;
            int cur = 0;
            while(m --) {
                RD(w);
                for(int j=0; j<n; ++j) { //卡常数优化 ,如果从1-n的话,得变成i <= n,需要多判断i是否等于n
                    dp[1 - cur][j] = dp[cur][(j+w) % n] * 0.5 + dp[cur][(j - w + n) % n] * 0.5;
                }
                cur = 1 - cur;
            }
            double ans = 0;
            for(int i=l-1; i<r; ++i) {
                ans += dp[cur][i];
            }
            printf("%.4f
    ",ans);
        }
        return 0;
    }
    


  • 相关阅读:
    clip属性,截取你想要显示的图片
    select背景灰色
    [转]ShowModal() = mrOk
    【转】Delphi-Unit文件结构
    析构方法
    [转]Delphi 7连接MySql /MariaDB
    MySQL/Mariadb遇见的问题
    更换数据库
    FlameRobin
    FireBird初使用
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3257848.html
Copyright © 2011-2022 走看看