求助!!莫名RE
查看原帖
求助!!莫名RE
492771
yanquan2010楼主2022/11/26 20:42

RE

#include<bits/stdc++.h>
using namespace std;
const int maxn=1010,mod=998244353;
int t,n,m,c,f,id;
int r[maxn][maxn],d[maxn][maxn];
long long sum[maxn][maxn],C,F;
bool a[maxn][maxn];
void init(){
    memset(a,0,sizeof(a));
    memset(sum,0,sizeof(sum));
    memset(r,0,sizeof(r));
    memset(d,0,sizeof(d));
    cin>>n>>m>>c>>f;
    cin.get();
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            a[i][j]=cin.get()-'0';
        }cin.get();
    }
    for(int i=1;i<=n;i++){
        int Sum=0;
        for(int j=m-1;j>=1;j--){
            if(a[i][j])r[i][j]=0;
            else r[i][j]=r[i][j+1]+(!a[i][j+1]);
        }
    }
    for(int j=1;j<=m;j++){
        int Sum=0;
        for(int i=2;i<=n;i++){
            sum[i][j]=sum[i-1][j]+r[i-1][j];
            if(a[i][j])sum[i][j]=0;
        }
    }
    for(int j=1;j<=m;j++){
        int Sum=0;
        for(int i=n-1;i>=1;i--){
            if(a[i][j])d[i][j]=0;
            else d[i][j]=d[i+1][j]+(!a[i+1][j]);
        }
    }
    return;
}
void solve(){
    C=F=0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(a[i][j])continue;
            long long tmp=((sum[i][j]-r[i-1][j])%mod)*r[i][j];
            tmp%=mod;
            C+=tmp;C%=mod;
            tmp*=d[i][j];
            tmp%=mod;
            F+=tmp;
            F%=mod;
        }
    }C*=c;F*=f;
    return;
}
int main(){
    cin>>t>>id;cin.get();
    while(t--){
        init();
        solve(); 
        cout<<C<<' '<<F<<'\n';
    }
    return 0;
}
2022/11/26 20:42
加载中...