Submission #39387035
Source Code Expand
#include<cstdio>
#include<cctype>
#include<map>
#include<vector>
#include<algorithm>
#define maxn 5555
const int mod=998244353;
template<class T>
inline T read(){
T r=0,f=0;
char c;
while(!isdigit(c=getchar()))f|=(c=='-');
while(isdigit(c))r=(r*10)+(c^48),c=getchar();
return f?-r:r;
}
inline long long qpow(long long a,int b){
long long ans=1;
for(;b;b>>=1){
if(b&1)(ans*=a)%=mod;
(a*=a)%=mod;
}
return ans;
}
int n,cnt[maxn];
long long f[maxn],p[maxn][maxn];
long long pw[maxn],frac[maxn],invf[maxn];
inline long long C(int n,int m){
if(n<m||m<0)return 0;
return frac[n]*invf[m]%mod*invf[n-m]%mod;
}
int main(){
n=read<int>();
for(int i=1;i<=n;i++)
cnt[read<int>()]++;
frac[0]=1;
for(int i=1;i<=n;i++)
frac[i]=frac[i-1]*i%mod;
invf[n]=qpow(frac[n],mod-2);
for(int i=n;i;i--)
invf[i-1]=invf[i]*i%mod;
pw[0]=1;
for(int i=1;i<=n;i++)
pw[i]=pw[i-1]*2%mod;
long long Inv=qpow(pw[n],mod-2),invn=qpow(n,mod-2);
for(int x=0;x<n;x++)
for(int y=0;y<=x+1;y++){
long long s=C(x,x-y);
(p[x][y]+=pw[n-x]*(n+1)%mod*s)%=mod;
(p[x][y]+=(pw[n-x]*(x-y+1)+pw[n-x-1]*(n-x))%mod*(C(x,x-y+1)+mod-s))%=mod;
(p[x][y]*=Inv*invn%mod)%=mod;
}
for(int i=0;i<n;i++){
f[i+1]=f[i]+mod-invn;
for(int j=0;j<=i;j++)
(f[i+1]+=(mod-p[i][j])*f[j])%=mod;
(f[i+1]*=qpow(p[i][i+1],mod-2))%=mod;
}
long long ans=mod-f[n];
for(int i=1;i<=n;i++)
ans+=f[cnt[i]];
printf("%lld\n",ans%mod);
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | Ex - Dye Color |
| User | wyzwyz |
| Language | C++ (GCC 9.2.1) |
| Score | 600 |
| Code Size | 1505 Byte |
| Status | AC |
| Exec Time | 59 ms |
| Memory | 25304 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 600 / 600 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | example_00.txt, example_01.txt, example_02.txt |
| All | example_00.txt, example_01.txt, example_02.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| example_00.txt | AC | 5 ms | 1604 KiB |
| example_01.txt | AC | 1 ms | 1612 KiB |
| example_02.txt | AC | 1 ms | 1640 KiB |
| test_00.txt | AC | 34 ms | 13112 KiB |
| test_01.txt | AC | 27 ms | 11616 KiB |
| test_02.txt | AC | 48 ms | 20336 KiB |
| test_03.txt | AC | 26 ms | 11152 KiB |
| test_04.txt | AC | 13 ms | 6632 KiB |
| test_05.txt | AC | 28 ms | 12444 KiB |
| test_06.txt | AC | 52 ms | 24724 KiB |
| test_07.txt | AC | 19 ms | 7860 KiB |
| test_08.txt | AC | 11 ms | 4780 KiB |
| test_09.txt | AC | 2 ms | 2068 KiB |
| test_10.txt | AC | 53 ms | 23272 KiB |
| test_11.txt | AC | 53 ms | 23624 KiB |
| test_12.txt | AC | 56 ms | 25164 KiB |
| test_13.txt | AC | 54 ms | 24168 KiB |
| test_14.txt | AC | 51 ms | 24932 KiB |
| test_15.txt | AC | 59 ms | 25292 KiB |
| test_16.txt | AC | 57 ms | 25304 KiB |
| test_17.txt | AC | 58 ms | 25212 KiB |
| test_18.txt | AC | 56 ms | 25188 KiB |
| test_19.txt | AC | 57 ms | 25300 KiB |
| test_20.txt | AC | 57 ms | 25252 KiB |
| test_21.txt | AC | 57 ms | 25284 KiB |
| test_22.txt | AC | 57 ms | 25208 KiB |
| test_23.txt | AC | 52 ms | 23584 KiB |
| test_24.txt | AC | 53 ms | 23432 KiB |
| test_25.txt | AC | 52 ms | 23736 KiB |