求助,玄学RE

P5664 [CSP-S2019] Emiya 家今天的饭

```cpp #include<bits/stdc++.h> using namespace std; int n,m,a[105][2005],s[105]; long long f[105][105][105],mod=998244353,ans; int main() { //freopen("meal.in","r",stdin); //freopen("meal.out","w",stdout); cin>>n>>m; ```cpp #include<bits/stdc++.h> using namespace std; int n,m,a[105][2005],s[105]; long long f[105][105][105],mod=998244353,ans; int main() { //freopen("meal.in","r",stdin); //freopen("meal.out","w",stdout); cin>>n>>m; for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) scanf("%d",&a[i][j]),s[i]=(s[i]+a[i][j])%mod;; ans=1; for(int i=1; i<=n; i++) ans=ans*(s[i]+1)%mod; for(int i=1; i<=m; i++) { memset(f,0,sizeof(f)); f[0][0][0]=1; for(int j=1; j<=n; j++) for(int k=0; k<=j; k++) for(int l=0; l<=j-k; l++) { f[j][k][l]=f[j-1][k][l]; if(k>0)f[j][k][l]=(f[j][k][l]+f[j-1][k-1][l]*a[j][i])%mod; if(l>0)f[j][k][l]=(f[j][k][l]+f[j-1][k-1][l]*(s[j]-a[j][i]+mod))%mod; //这句话不应该加f[j-1][k-1][l],因为这里的情况是你不在当前行选择同列的数,k不变, //反而是l比上一状态增加了1。所以这里的f[j-1][k-1][l]应该为f[j-1][k][l-1]。 } for(int j=1; j<=n; j++) for(int k=0; k<=n-i; j++) //这里的k打错了应该是k<=n-j,还有就是是k++; if(j>k) ans=(ans-f[n][j][k]+mod)%mod; } cout<<(ans-1+mod)%mod; return 0; } ```
by 倾听者的优势 @ 2019-12-23 17:36:31


刚刚好过了15天 2019-12-08 17:36--2019-12-23 17:36
by 倾听者的优势 @ 2019-12-23 17:40:04


|