P8865 f统计出错求调
  • 板块学术版
  • 楼主Uridine_
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/15 22:26
  • 上次更新2023/11/16 10:45:30
查看原帖
P8865 f统计出错求调
755359
Uridine_楼主2023/11/15 22:26
#include<iostream>
#include<cstdio>
#include<cstring>

using namespace std;

const long long mod=998244353;

long meml[1050][1050];
long sumh[1050];
bool mapm[1050][1050];



void work(int n,int m)
{
	unsigned long long ansc=0;
	unsigned long long lasc=0;
	unsigned long long ansf=0;
	for(int i=1;i<=m;i++)
	{
		memset(sumh,0,sizeof(sumh)); lasc=0;
		for(int j=1;j<=n;j++)
		{
			if(mapm[j][i]==0)
			{
				sumh[j]=(sumh[j-1]+meml[j][i+1])%mod;
				if(j>=3)
				{
					if(j!=n) ansf=(ansf+lasc)%mod;
					ansc=(ansc+meml[j][i+1]*sumh[j-2])%mod;
					lasc=(lasc+meml[j][i+1]*sumh[j-2])%mod;
					
				}		
			}
			else
				memset(sumh,0,sizeof(sumh)),lasc=0;
		}
	}
	cout<<ansc<<' '<<ansf<<endl;
	
}

int main()
{
	int t,d;scanf("%d%d",&t,&d);
	while(t--)
	{
		memset(meml,0,sizeof(meml));
		memset(mapm,0,sizeof(mapm));
		int n,m,c,f;scanf("%d%d%d%d",&n,&m,&c,&f);
		for(int i=1;i<=n;i++)
		{
			string data;cin>>data;
			for(int j=1;j<=m;j++)
			{
				mapm[i][j]=data[j-1]=='1'? 1:0;
			}
			for(int j=m;j>=1;j--)
			{
				if(mapm[i][j]==0)
					meml[i][j]=meml[i][j+1]+1;
				else
					meml[i][j]=0;
			}	
		}
		work(n,m);
	}
}
2023/11/15 22:26
加载中...