HDU 4576(2013杭州邀请赛) 滚动数组+模拟过程

来源:互联网 发布:服装斜纹捆条计算法 编辑:程序博客网 时间:2024/05/22 17:46

一个求概率的题目,模拟过程

用个类似滚动数组的

思路如代码:


#include<string.h>#include<algorithm>#include <stdio.h>using namespace std;#define N 201double sum[2][N];//滚动数组int main(){    int i,j,n,m,l,r,w,dis;    while(scanf("%d %d %d %d",&n,&m,&l,&r),n){        int ro=0;        sum[0][0]=1;        while(m--){            scanf("%d",&w);   w%=n;//取个模防止机器人走好几圈            ro=!ro;            memset(sum[ro],0,sizeof(sum[ro]));            for(i=0;i<n;i++)            {                if(i-w>=0)dis=i-w;                else dis=i+n-w;                    sum[ro][i]=sum[!ro][(i+w)%n]*0.5+sum[!ro][dis]*0.5;            }        }        double ans=0;        for(i=l-1;i<r;i++)ans+=sum[ro][i];        printf("%.4lf\n",ans);    }    return 0;}


原创粉丝点击