摸底测试#1
T1-咕咕
直接 \(dp\),转移时注意限制即可。
点击查看代码
signed main(){
n=read(),m=read(),t=read();
while(t--){
int a=read(),b=read(),c=read(),d=read();
bool flag=0;
if(a==n&&b==m)continue;
if((c==a+1&&d==b)||(d==b+1&&a==c))flag=1;
if(!flag||f[a][b]==-1){
f[a][b]=-1;
continue;
}
if(c==a+1){
if(f[a][b]==2)f[a][b]=-1;
else f[a][b]=1;
}else if(d==b+1){
if(f[a][b]==1)f[a][b]=-1;
else f[a][b]=2;
}
}
if(f[1][1]==-1){
puts("0");
return 0;
}
dp[1][1]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
if(f[i][j]==-1)dp[i][j]=0;
else{
if(f[i-1][j]!=2)dp[i][j]+=dp[i-1][j];
if(f[i][j-1]!=1)dp[i][j]+=dp[i][j-1];
dp[i][j]%=p;
}
}
println(dp[n][m]);
return 0;
}