87385278527

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
using namespace std;

typedef long long ll;
const ll MOD=998244353;
const int N=250,M=2000;
int n,n2,m;
ll a[N][M],sa[N],Ans,f[N][N];

void Read()
{
	Ans=1;
	scanf("%d%d",&n,&m);
	n2=n<<1;
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=m;++j)
		{
			cin>>a[i][j];
			sa[i]=(sa[i]+a[i][j])%MOD;
		}
		Ans=(Ans*(sa[i]+1))%MOD;//计算全部答案,注意不选也是一种情况
	}
	Ans=(Ans-1+MOD)%MOD;//减去全部不选的情况
}

void DP()
{
	for(int i=1;i<=m;++i)
	{
		for(int j=0;j<=n2;++j)
			for(int k=0;k<=n2;++k) f[j][k]=0;
		f[0][0]=1;//DP初值
		for(int j=1,YH=0;j<=n;++j,YH+=2)
			for(int k=0;k<=YH;++k)
			{
				f[j][k]=(f[j][k]+f[j-1][k]*(sa[j]-a[j][i]+MOD)%MOD)%MOD,
				f[j][k+1]=(f[j][k+1]+f[j-1][k])%MOD,
				f[j][k+2]=(f[j][k+2]+f[j-1][k]*a[j][i]%MOD)%MOD;
			}
		for(int j=n+1;j<=n2;++j)
			Ans=(Ans-f[n][j]+MOD)%MOD;//减去当前枚举到的不合法方案
	}
}

int main()
{
	Read(),DP(),cout<<Ans<<endl;
	return 0;
}
上一篇:Sqlserver sa账号无法使用问题


下一篇:让你成为广场舞中最靓的仔,这款户外便携式音响让你沉浸舞曲节奏满满