http://acm.hdu.edu.cn/showproblem.php?pid=4576 同样的时间复杂度为什么同学AC我TLE AWA 我的程序:
#include<bits/stdc++.h>
using namespace std;
float a[201],b[201],c[1000001];
int n,m,l,r,w;
int i,j,k;
int num=1;
float ans=0;
int main() {
while(1) {
memset(b,0,n+1);
memset(a,0,n+1);
cin>>n>>m>>l>>r;
if(n==0&&m==0&&l==0&r==0)break;
for(i=0; i<m; i++) {
scanf("%f",&c[i]);
}
a[1]=1;
for(i=0; i<m; i++) {
for(j=1; j<=n; j++) {
num+=c[i];
if(num>n) {
num%=n;
}
b[num]+=a[j]*0.5;
num-=c[i]*2;
if(num<1) {
num=num%n+n;
}
b[num]+=a[j]*0.5;
}
for(j=1;j<=n;j++){
a[j]=b[j];
b[j]=0;
}
}
for(j=l;j<=r;j++){
ans+=a[j];
}
printf("%.4f\n",ans);
ans=0;
num=1;
}
return 0;
}