如果你莫名RE,TLE,或者奇怪的WA
查看原帖
如果你莫名RE,TLE,或者奇怪的WA
221002
hytree楼主2022/11/30 15:38

大概率是你输入的时候getchar()读错了,建议在输完n,m,c,f,后再getchar(),并在读取最后一组数据的最后一行时不要getchar()(民间数据造的怪怪的),最后,楼主爆longlong了,不知道怎么爆的,也挺奇怪的,要是有人能帮忙看看就更好了QWQ

#include<bits/stdc++.h>
using namespace std;
#define in long long
int t,ID,dp2[1010][1010],dp[1010][1010],qz2[1010][1010],qz1[1010][1010],n,m,c,f,ansc,ansf;
const int mod=998244353ll;
int a[1010][1010];
void read(int &x)
{
    x=0;char ch=getchar();
    while(ch<48||ch>57) ch=getchar();
    x=ch-48;ch=getchar();
    while(ch>48&&ch<57) x=x*10+ch-48,ch=getchar();
}
signed main()
{
    cin>>t>>ID;
    while(t--)
    {
    	memset(dp,0,sizeof(dp));
		memset(dp2,0,sizeof(dp2));
		memset(qz1,0,sizeof(qz1));
		memset(qz2,0,sizeof(qz2));
		memset(a,0,sizeof(a));
		ansc=0ll,ansf=0ll;
        cin>>n>>m>>c>>f;getchar();
        for(int i=1;i<=n;++i)
        {
        	for(int j=1;j<=m;++j)
        	a[i][j]=getchar()-48;
    		if(!t||i!=n)getchar();
		}
	/*	for(int i=1;i<=n;++i)
		{
			for(int j=1;j<=m;++j)
			cout<<a[i][j]<<" ";
			puts("");	
		}*/
		int p=1ll,las=0ll;
		for(int i=1;i<=n;++i)
		{
			p=1ll,las=0ll;
			while(p<=m)
			{
				if(a[i][p])
				{
					for(int j=las+1;j<p;++j)
					dp[i][j]=p-j-1ll;
					las=p;
				}
				++p;
			}
			for(int j=las+1;j<p;++j)
			dp[i][j]=p-j-1ll;
		}
		for(int j=1;j<=m;++j)
		{
			p=1ll,las=0ll;
			while(p<=n)
			{
				if(a[p][j])
				{
					for(int i=las+1;i<p;++i)
					dp2[i][j]=p-i-1ll;
					las=p;
				}
				++p;
			}
			for(int i=las+1;i<p;++i)
			dp2[i][j]=p-i-1ll;
		}
		ansc=0ll,ansf=0ll;
		for(int j=1;j<=m;++j)
		{
			int pz=0ll;
			for(int i=1;i<=n;++i)
			pz+=dp[i][j],pz%=mod,qz1[i][j]=pz;
		}
		for(int j=1;j<=m;++j)
		{
			int pz=0ll;
			for(int i=1;i<=n;++i)
			pz=(pz+dp[i][j]*dp2[i][j]%mod)%mod,qz2[i][j]=pz;
		}
		for(int i=1;i<=n;++i)
		{
			for(int j=1;j<=m;++j)
			{	
				if(i<=n-2)
				{
					ansc=(ansc+(((qz1[i+dp2[i][j]][j]-qz1[i+1][j])%mod)*dp[i][j])%mod)%mod;
				}
				if(i<=n-3)
				ansf=(ansf+(((qz2[i+dp2[i][j]][j]-qz2[i+1][j])%mod)*dp[i][j])%mod)%mod;
			}
		}
    	printf("%lld %lld\n",(c*ansc)%mod,(f*ansf)%mod);
	}
}
2022/11/30 15:38
加载中...