比赛时少写第32行 infoj100->1 luogu100->7
afo 祝大家好运
#include <bits/stdc++.h>
using namespace std;
long long T,id,n,m,c,f,k,s1,s2,ss1,ss2;
long long ans1,ans2;
char a[1005][1005];
long long b[1005][1005],b2[1005][1005];//line col
int main(){
cin>>T>>id;
for(int TT=1;TT<=T;TT++){
cin>>n>>m>>c>>f;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)cin>>a[i][j];
ans1=0,ans2=0;
for(int i=1;i<=n;i++){
k=-1;
for(int j=m;j>=1;j--){
if(a[i][j]=='1')k=-1;
else k++;
b[i][j]=k;
}
}
for(int j=1;j<=m;j++){
k=-1;
for(int i=n;i>=1;i--){
if(a[i][j]=='1')k=-1;
else k++;
b2[i][j]=k;
}
}
for(int j=1;j<=m;j++){
s1=b[n][j],s2=0,ss1=b[n][j]*b2[n][j],ss2=0;
if(b[n][j]==-1){s1=0,s2=0,ss1=0,ss2=0;}
for(int i=n-1;i>=1;i--){
if(b[i][j]==-1){s1=0,s2=0,ss1=0,ss2=0;continue;}
ans1=(ans1+(b[i][j]*s2)%998244353)%998244353;
ans2=(ans2+(b[i][j]*ss2)%998244353)%998244353;
s2=s1,s1+=b[i][j];
ss2=ss1,ss1+=b[i][j]*b2[i][j];
}
}
cout<<ans1*c<<' '<<ans2*f<<endl;
}
return 0;
}