xxsWA1pts样例没过求调
查看原帖
xxsWA1pts样例没过求调
1021663
__hjwucj__楼主2024/7/4 10:33
#include <bits/stdc++.h>
#define int long long
#define double long double
#define elif else if
#define fin(x) freopen (x,"r",stdin)
#define fout(x) freopen (x,"w",stdout)
#define rnt register int
#define reg(i,x,y) for (rnt i=(x);i<=(y);++i)
#define Reg(i,x,y) for (rnt i=(y);i>=(x);--i)
#define inf 19198101919810114514
using namespace std;
namespace rwm {inline int read () {int s=0,w=0;char c=getchar ();while (!isdigit (c)){w|=(c=='-');c=getchar ();}while (isdigit (c)) {s=(s<<1)+(s<<3)+(c^48);c=getchar ();}return w?-s:s;}inline void write (int x) {if (x<0) putchar ( '-'),x=-x;if (x>9) write (x/10);putchar (x%10|48);}inline void writesp (int x) {write (x),putchar (' ');}inline void writeln (int x) {write (x),putchar ('\n');}inline int square (int x) {return x*x;}inline int floor (double x) {return x;}inline int ceil (double x) {return (int)(x+0.5);}inline int gcd (int x,int y) {int z=x%y;while (z) x=y,y=z,z=x%y;return y;}inline int lcm (int x,int y) {return x/gcd (x,y)*y;}};
using namespace rwm;
int t,n,m,c,F,f[1001][1001],ansc,ansf,jis,jil,jilf;
const int mod=998244353;
char a[1001][1001];
signed main ()
{
	t=read (),read ();
	while (t--)
	{
		memset (f,0,sizeof f);
		n=read (),m=read (),c=read (),F=read ();
		reg (i,1,n) reg (j,1,m) cin>>a[i][j];
		reg (i,1,n) for (rnt j=m-1;j>=1;--j)
			if (a[i][j]=='1') f[i][j]=-1;
				else if (a[i][j]=='0') f[i][j]=f[i][j+1]+1;
		reg (j,1,m-1)
		{
			jis=jil=jilf=0;
			reg (i,1,n)
			{
				if (f[i][j]==-1) {jis=jilf=jil=0;continue;}
				ansc=ansc%mod+(1ll*f[i][j]*(jil%mod))%mod;
				ansf=(ansf%mod+jilf%mod)%mod;
				jilf=(jilf+(1ll*f[i][j]*(jil%mod))%mod)%mod;
				jil+=max ((int)0,f[i-1][j]);
			}
		}
		writesp ((c*ansc)%mod),writeln ((F*ansf)%mod); 
		ansc=ansf=0;
	}
	return 0;
}
2024/7/4 10:33
加载中...