78psWA求改
查看原帖
78psWA求改
187810
ADNAP楼主2023/11/4 22:06
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+1e4,M=1e3+1e2;
const ll Mod=998244353;
ll t;
ll id;
ll n,m,c,f;
ll a[M][M];
ll hang[M][M];
ll lie[M][M];
char ch;
ll hou[M][M];
ll shang[M][M];
ll xia[M][M];
signed main()
{
    cin>>t>>id;
    while(t--)
    {
        memset(hang,0,sizeof hang);
        memset(lie,0,sizeof lie);
        memset(hou,0,sizeof hou);
        memset(shang,0,sizeof shang);
        memset(xia,0,sizeof xia);
        cin>>n>>m>>c>>f;
        ll ansc=0,ansf=0;
        for(ll i=1;i<=n;i++)
            for(ll j=1;j<=m;j++)
            {
                cin>>ch;
                a[i][j]=1-(ch^48);
            }
        for(ll i=1;i<=n;i++)
            for(ll j=1;j<=m;j++)
                hang[i][j]=hang[i][j]+a[i][j];
        for(ll i=1;i<=m;i++)
            for(ll j=1;j<=n;j++)
                lie[j][i]=lie[j-1][i]+a[i][j];
        for(ll i=1;i<=n;i++)
            for(ll j=m;j>=1;j--)
                if(a[i][j]==1)hou[i][j]=hou[i][j+1]+1;
        
        for(ll i=1;i<=m;i++)
            for(ll j=2;j<=n;j++)
                if(a[j-2][i]==1&&a[j-1][i]==1&&a[j][i]==1)shang[j][i]=shang[j-1][i]+hou[j-2][i]-1;
        for(ll i=1;i<=m;i++)
            for(ll j=n;j>=1;j--)
                if(a[j][i]==1)xia[j][i]=xia[j+1][i]+1;
        for(ll i=1;i<=n;i++)
            for(ll j=1;j<=m;j++)
                if(a[i][j]==1)ansc+=(shang[i][j]%Mod)*((hou[i][j]-1)%Mod),ansc%=Mod,ansf+=(shang[i][j]%Mod)*((hou[i][j]-1)%Mod)*((xia[i][j]-1)%Mod);
        cout<<ansc*c<<" "<<ansf*f<<"\n";
    }
}
2023/11/4 22:06
加载中...