摸摸。
by _LiMLE_ @ 2022-11-27 00:13:53
@[LRL65](/user/57779) 是不是换行符的问题,去linux下试试看?
by yzhang @ 2022-11-27 00:18:43
@[yzhang](/user/37881) 是的是的
by LRL65 @ 2022-11-27 00:19:07
```cpp
#include<bits/stdc++.h>
const long long mod=998244353;
using namespace std;
long long T,n,m,c,f,nxt[1005][1005],nxt2[1005][1005],nxt3[1005][1005],id;
char a[1005][1005];
int main() {
freopen("plant.in","r",stdin);
freopen("plant.out","w",stdout);
cin>>T>>id;
while(T--) {
cin>>n>>m>>c>>f;
for(int i=1;i<=n;i++) {
getchar();
for(int j=1;j<=m;j++)
a[i][j]=getchar();
}
long long nxtf=-1;
for(int i=1;i<=n;i++) {
nxtf=-1;
for(int j=m;j>=1;j--) {
if(a[i][j]=='1')nxtf=-1;
if(a[i][j]=='0'&&nxtf==-1)nxtf=j;
if(nxtf==-1)nxt[i][j]=0;
else nxt[i][j]=nxtf-j;
}
}
nxtf=-1;
for(int j=1;j<=m;j++) {
nxtf=-1;
for(int i=n;i>=1;i--) {
if(a[i][j]=='1')nxtf=-1;
if(a[i][j]=='0'&&nxtf==-1)nxtf=i;
if(nxtf==-1)nxt2[i][j]=0;
else nxt2[i][j]=nxtf-i;
}
}
for(int j=1;j<=m;j++) {
nxtf=-1;
for(int i=1;i<=n;i++) {
if(a[i][j]=='1')nxtf=-1;
if(a[i][j]=='0'&&nxtf==-1)nxtf=i;
if(nxtf==-1)nxt3[i][j]=0;
else nxt3[i][j]=i-nxtf;
}
}
for(int j=1;j<=m;j++)
for(int i=2;i<=n;i++)
if(a[i][j]=='0')nxt[i][j]+=nxt[i-1][j];
long long ans1=0,ans2=0;
for(int i=1;i<=n-2;i++)
for(int j=1;j<=m;j++)
if(nxt2[i][j]>1)ans1=(ans1+(nxt[i][j]-nxt[i-1][j])*(nxt[i+nxt2[i][j]][j]-nxt[i+1][j])%mod)%mod;
for(int i=3;i<=n-1;i++)
for(int j=1;j<=m;j++)
if(nxt3[i][j]>1)ans2=(ans2+(nxt[i-2][j]-nxt[i-nxt3[i][j]-1][j])*(nxt[i][j]-nxt[i-1][j])%mod*nxt2[i][j]%mod)%mod;
cout<<c*ans1%mod<<" "<<f*ans2%mod<<endl;
}
}
```
by LRL65 @ 2022-11-27 00:19:43
这个是源代码,大家一定要吸取教训
by LRL65 @ 2022-11-27 00:20:01
@[LRL65](/user/57779) linux下只有\n,windows是\r\n,感觉看起来linux不会寄啊()
by yzhang @ 2022-11-27 00:21:38
@[LRL65](/user/57779) linux 下你这个应该能过
by DitaMirika @ 2022-11-27 00:25:56
@[LRL65](/user/57779) 你样例过了吗,这种问题样例过了应该就问题不大
by Sol1 @ 2022-11-27 00:27:18
@[Sol1](/user/61088) 过了
by LRL65 @ 2022-11-27 00:27:48
我记着bj省选就有个哥们快读写错 民间数据wa0 官方过了
by Sol1 @ 2022-11-27 00:29:02