求助!
查看原帖
求助!
1124466
Tommyshizichen楼主2024/7/11 15:05
#include<bits/stdc++.h>
using namespace std;
const int N=2*1e2;
const int M=2000+5;
const long long mod=998244353;
#define int long long
int n,m;
int num[N][M],tot[N];
int f[N][2*N];
int g[N][N*2];
void rread()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>num[i][j];
			tot[i]+=num[i][j];
			tot[i]%=mod;
		}
	}
	return;
}
void solve()
{
	int ans=0;
	f[0][0]=1;
	for(int i=1;i<=n;i++){
		f[i][0]=1;
		for(int j=1;j<=i;j++){
			f[i][j]=f[i-1][j-1]*tot[i]%mod;
			f[i][j]+=f[i-1][j];
			f[i][j]%=mod;
		}
	}
	for(int j=1;j<=n;j++){
		ans+=f[n][j];
		ans%=mod;
	}
	for(int k=1;k<=m;k++){
		memset(g,0,sizeof g);
		g[0][n]=1;
		for(int i=1;i<=n;i++){
			for(int j=n-i+1;j<=n+i-1;j++){
				g[i][j-1]+=g[i-1][j]*((mod+tot[i]-num[i][k])%mod)%mod;
				g[i][j-1]%=mod;
				g[i][j]+=g[i-1][j];
				g[i][j]%=mod;
				g[i][j+1]+=g[i-1][j]*num[i][k]%mod;
				g[i][j+1]%=mod;
			}	
		}
	}
	for(int j=n+1;j<=n+n;j++){
		ans+=(mod-g[n][j])%mod;
		ans%=mod;
	}
	cout<<ans;
}
signed main()
{
	rread();
	solve();
	return 0;
}
2024/7/11 15:05
加载中...