1 条题解
-
1
#include <bits/stdc++.h> using namespace std; #define int long long const int N=110; const int M=2110; const int mod=998244353; int n,m; int s[N]; int a[N][M]; int dp[N][M]; int f[N][N*2]; int ans; signed main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; a[i][j]%=mod; s[i]+=a[i][j]; s[i]%=mod; } } dp[0][0]=1; for(int i=1;i<=n;i++){ for(int j=0;j<=i;j++){ dp[i][j]=dp[i-1][j]; if(j){ dp[i][j]=(dp[i][j]+dp[i-1][j-1]*s[i]%mod)%mod; } } } for(int i=1;i<=n;i++){ ans=(ans+dp[n][i])%mod; } for(int k=1;k<=m;k++){ memset(f,0,sizeof(f)); f[0][N]=1; for(int i=1;i<=n;i++){ for(int j=1;j+1<2*N;j++){ f[i][j]=f[i-1][j]%mod; f[i][j]=(f[i][j]+(f[i-1][j-1]*a[i][k]%mod)%mod)%mod; f[i][j]=(f[i][j]+f[i-1][j+1]*(s[i]-a[i][k])%mod)%mod; } } for(int i=1;i<=n;i++) ans=(ans-f[n][N+i])%mod; } cout<<(ans%mod+mod)%mod; return 0; }
信息
- ID
- 632
- 时间
- 1000ms
- 内存
- 250MiB
- 难度
- 提高+/省选
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者