1 条题解
-
0
superduo LV 1 MOD @ 2026-05-05 13:44:05
赛时AC代码。
#include<bits/stdc++.h> #define int long long using namespace std; const int N=510,mod=998244353; int n,m; int a[N][N],s,ans; vector<pair<int,int>> g[N*N]; int ksm(int x,int y) { int ans=1; while(y) { if(y%2==1) ans=ans*x%mod; x=x*x%mod,y/=2; } return ans; } signed main() { cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) cin>>a[i][j]; sort(a[i]+1,a[i]+m+1); int k=1; while(k<=m) { int c=0,id=a[i][k]; while(k<=m&&a[i][k]==id) c++,k++; g[id].push_back({i,c}); } } s=ksm(m,n); for(int i=1;i<=n*m;i++) { if(!g[i].size()) continue; int p=1,k=0; for(int j=1;j<=n;j++) { if(k<g[i].size()&&g[i][k].first==j) p=p*(m-g[i][k].second)%mod,k++; else p=p*m%mod; } ans=(ans+s-p+mod)%mod; } cout<<ans; return 0; }
- 1