dalao求调
查看原帖
dalao求调
1056745
wen114248050楼主2024/8/22 14:35
#include <bits/stdc++.h>
using namespace std;
const int mod=998244353;
int T,id,n,m,c,f,s,s1,ansc,ansf,g[2001][2001];
char a[2001][2001];
int main()
{
	cin>>T>>id;
	while(T--)
	{
		ansc=0;
		ansf=0;
		memset(g,0,sizeof(g));
		cin>>n>>m>>c>>f;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				cin>>a[i][j];
			}
		}
		for(int i=1;i<=n;i++)
		{
			for(int j=m-1;j>=1;j--)
			{
				if(a[i][j]=='1')
				{
					g[i][j]=-1;
				} 
				else if(a[i][j+1]=='0')
				{
					g[i][j]=g[i][j+1]+1;	
				}
			}
		}
		for(int j=1;j<m;j++)
		{
			s=s1=0;
			for(int i=1;i<=n;i++)
			{
				if(g[i][j]==-1)
				{
					s=s1=0;
					continue ;
				}
				ansc+=g[i][j]*s1%mod;
				ansc%=mod;
				ansf+=s%mod;
				ansf%=mod;
				s+=g[i][j]*s1%mod;
				s%=mod;
				s1+=max(0,g[i-1][j]);
				s1%=mod;
			}
		}
		cout<<ansc*c%mod<<" "<<ansf*f%mod;
	}
	return 0;
}
/*
001
010
000
000
*/
2024/8/22 14:35
加载中...