rt,不知道为何全TLE,LOJ上的数据下载一些在你谷IDE是AC的(LOJ似乎炸了,提交不了)
#include<iostream>
#include<cstring>
#include<cstdio>
#define ll long long
using namespace std;
const int N=1e3;
const int M=1e3;
const ll mod=998244353;
char s[N+5][M+5];
ll f0[N+5][M+5],f1[N+5][M+5],f2[N+5][M+5],f3[N+5][M+5];
ll solve(){
int n,m;ll c,f;
scanf("%d%d%lld%lld",&n,&m,&c,&f);
for(int i=1;i<=n;i++){
scanf("%s",s[i]+1);
}
memset(f0,0,sizeof f0);
memset(f1,0,sizeof f1);
memset(f2,0,sizeof f2);
memset(f3,0,sizeof f3);
ll resC=0,resF=0;
for(int i=n;i;i--){
for(int j=m;j;j--){
if(s[i][j]=='1'){
continue;
}
f0[i][j]=(f0[i][j+1]+1)%mod;
f1[i][j]=(max(f0[i+1][j]-1,0ll)+f1[i+1][j])%mod;
f2[i][j]=(f2[i+1][j]+1)%mod;
f3[i][j]=(max(f0[i+1][j]-1,0ll)*f2[i+2][j]+f3[i+1][j])%mod;
resC=(resC+max(f0[i][j]-1,0ll)*f1[i+1][j])%mod;
resF=(resF+max(f0[i][j]-1,0ll)*f3[i+1][j])%mod;
}
}
printf("%lld %lld\n",resC*c,resF*f);
}
int main(){
int T,id;
scanf("%d%d",&T,&id);
while(T--){
solve();
}
return 0;
}