12pts求条【玄关】
查看原帖
12pts求条【玄关】
1115392
small_moon楼主2025/8/29 20:29

代码如下

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int N=1010,mod=998244353;
int T,n,m,c,f,id,ansc,ansf;
string g[N];
int sum[N][N];
void solve()
{
    cin>>n>>m>>c>>f;
    for(int i=1;i<=n;i++)
    {
        cin>>g[i];
        g[i]=" "+g[i]+" ";
    }
    memset(sum,0,sizeof sum);
    for(int i=1;i<=n;i++)
        for(int j=m-1;j>=1;j--)
            if(g[i][j]=='1') sum[i][j]=0;
            else if(g[i][j+1]=='0') sum[i][j]=sum[i][j+1]+1;
    for(int j=1,tmp=0,ac=0;j<m;j++)
    {
        for(int i=1;i<=n;i++)
        {
            if(g[i][j]=='1')
            {
                tmp=0;
                continue;
            }
            ansf=(ansf+ac)%mod;
            ac=(ac+sum[i][j]*tmp)%mod;
            ansc=(ansc+sum[i][j]*tmp)%mod;
            tmp=(tmp+sum[i-1][j])%mod;
        }
        tmp=ac=0;
    }
    printf("%lld %lld\n",(c*ansc)%mod,(f*ansf)%mod);
    ansc=ansf=0;
}
signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin>>T>>id;
    while(T--)
        solve();
    return 0;
}
2025/8/29 20:29
加载中...