为什么会运行时错误

P1373 小 a 和 uim 之大逃离

``` #include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; typedef long long ll; const ll base=50;//a>uim ll dp[801][801][100][2],map[801][801];//0-a,1-uim ll i,j,q,t; ll N,M,K,tem,ans; ll mov; ll op(int x); int main(){ ios::sync_with_stdio(false); cin>>N>>M>>K; K++; for(i=1;i<=N;i++) for(j=1;j<=M;j++){ cin>>map[i][j]; } dp[1][1][base+map[1][1]%K][0]=1; for(i=1;i<=N;i++) for(j=1;j<=M;j++){ if(i==j&&i==1) continue; dp[i][j][base+map[i][j]][0]=1; for(q=base-2*K;q<=base+2*K;q++){ if(q>=base+2*K) continue; if(q<=base-2*K) continue; if(q>=base+K){ mov=q-K; dp[i][j][mov][0]+=dp[i-1][j][q-map[i][j]][1]; dp[i][j][mov][0]+=dp[i][j-1][q-map[i][j]][1]; continue; } else if(q<=base-K){ mov=q+K; dp[i][j][mov][1]+=dp[i-1][j][q+map[i][j]][0]; dp[i][j][mov][1]+=dp[i][j-1][q+map[i][j]][0]; continue; } else{ mov=q; dp[i][j][mov][0]+=dp[i-1][j][op(q-map[i][j])][1]; dp[i][j][mov][0]+=dp[i][j-1][op(q-map[i][j])][1]; dp[i][j][mov][1]+=dp[i-1][j][op(q+map[i][j])][0]; dp[i][j][mov][1]+=dp[i][j-1][op(q+map[i][j])][0]; } } } for(i=1;i<=N;i++) for(j=1;j<=M;j++) ans+=dp[i][j][base][1]; cout<<ans<<endl; } ll op(int x){ if(x<=base-K) x+=K; if(x>=base+K) x-=K; return x; } ```
by Carloramia @ 2018-02-04 21:02:34


|