本文主要是介绍HDU 4576 Robot,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//题目并不算难,但是特么的就是坑死你。。。
//用数组a[]维护每轮的结果,a[i]就是代表走到i的概率。。。还需借助辅助数组q[]。
#include<stdio.h>
#include<string.h>#define max 205
int n,m,l,r;
double q[max],a[max];
int main(){
while(scanf("%d%d%d%d",&n,&m,&l,&r)==4,n+m+l+r){
memset(a,0,sizeof(a));
memset(q,0,sizeof(q));
a[1]=1;
for(int j=0;j<m;j++){
int w;
scanf("%d",&w);
w%=n;
//memset(q,0,sizeof(q));
for(int i=1;i<=n;i++){
if(a[i]==0){
continue;
}
int rr=i+w;
while(rr>n){
rr-=n;
}
q[rr]+=a[i]*0.5;
int ll=i-w;
while(ll<=0){
ll+=n;
}
q[ll]+=a[i]*0.5;
}
memcpy(a,q,sizeof(q));
memset(q,0,sizeof(q));
}
double ans=0;
for(int i=l;i<=r;i++){
ans+=a[i];
}
printf("%.4lf\n",ans);
}
}
这篇关于HDU 4576 Robot的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!