1 条题解

  • 1
    @ 2026-8-31 15:56:18
    #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
    上传者