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
AC × 3
AC × 29
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