提出 #44099649


ソースコード 拡げる

class combi:
    def __init__(self,max_n,mod):
        max_n+=1
        self.mod=mod
        self.fact=[0]*max_n
        self.rev=[0]*max_n
        self.fact_rev=[0]*max_n
        self.fact[0]=1
        self.rev[0]=1
        self.fact_rev[0]=1
        for i in range(max_n):
            if i<=1:
                self.fact[i]=1
                self.rev[i]=1
                self.fact_rev[i]=1
                continue
            self.fact[i]=(i*self.fact[i-1])%mod
            self.rev[i]=mod-((mod//i)*self.rev[mod%i])%mod
            self.fact_rev[i]=(self.fact_rev[i-1]*self.rev[i])%mod
    def combination(self,a,b):
        if a<b:
            return 0
        ans=(self.fact_rev[a-b]*self.fact_rev[b])%self.mod
        return (ans*self.fact[a])%self.mod
N=int(input())
P=list(map(int,input().split()))
R=int(input())
A=list(map(int,input().split()))
MOD=998244353
CO=combi(N,MOD)
dp=[[0 for i in range(N)]for j in range(N)]
for i in range(N):dp[i][0]=1

#make var1 -> var2 table
table=[[0 for i in range(N)]for j in range(N)]
table[0][0]=1
table[1][1]=R
for i in range(1,N-1):
	for j in range(1,i+1):
		table[i+1][j]+=table[i][j]*((R*j)-i)%MOD
		table[i+1][j+1]=table[i][j]*R%MOD
		table[i+1][j]%=MOD

for var in range(N-1,-1,-1):
	#ch4 -> var1
	for i in range(N):
		dp[var][i]=dp[var][i]*CO.fact[i]%MOD

	#var1 -> var2
	tmp=[0]*N
	for i in range(N):
		for j in range(i+1):
			tmp[i]=(tmp[i]+table[i][j]*dp[var][j])%MOD
	tmp,dp[var]=dp[var],tmp

	#var2 ->  var3
	for i in range(N):tmp[i]=0
	val=1
	for i in range(N):
		for j in range(i,N):
			tmp[j]=(tmp[j]+(dp[var][j-i]*val%MOD)*CO.combination(j,i))%MOD
		val=(val*(A[var]-i))%MOD
	tmp,dp[var]=dp[var],tmp

	if var:
		#var3 -> var4
		for i in range(N-1):
			dp[var][i]=(dp[var][i]+dp[var][i+1]*CO.rev[i+1])%MOD
			dp[var][i]=(dp[var][i]*CO.fact_rev[i])%MOD

		#var4 -> pare1
		for i in range(N):tmp[i]=0
		pare=P[var-1]-1
		for i in range(N):
			for j in range(N-i):
				tmp[i+j]=(tmp[i+j]+dp[var][i]*dp[pare][j])%MOD
		dp[pare],tmp=tmp,dp[pare]

	else:
		print(dp[0][0])

提出情報

提出日時
問題 E - Child to Parent
ユーザ potato167
言語 PyPy3 (7.3.0)
得点 1400
コード長 2108 Byte
結果 AC
実行時間 2367 ms
メモリ 104060 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1400 / 1400
結果
AC × 5
AC × 73
セット名 テストケース
Sample 01_sample_01.txt, 01_sample_02.txt, 01_sample_03.txt, 01_sample_04.txt, 01_sample_05.txt
All 01_sample_01.txt, 01_sample_02.txt, 01_sample_03.txt, 01_sample_04.txt, 01_sample_05.txt, 02_small_01.txt, 02_small_02.txt, 02_small_03.txt, 02_small_04.txt, 02_small_05.txt, 02_small_06.txt, 02_small_07.txt, 02_small_08.txt, 02_small_09.txt, 02_small_10.txt, 03_random_tree_01.txt, 03_random_tree_02.txt, 03_random_tree_03.txt, 03_random_tree_04.txt, 03_random_tree_05.txt, 03_random_tree_06.txt, 03_random_tree_07.txt, 03_random_tree_08.txt, 03_random_tree_09.txt, 03_random_tree_10.txt, 03_random_tree_11.txt, 03_random_tree_12.txt, 03_random_tree_13.txt, 03_random_tree_14.txt, 03_random_tree_15.txt, 03_random_tree_16.txt, 03_random_tree_17.txt, 03_random_tree_18.txt, 03_random_tree_19.txt, 03_random_tree_20.txt, 03_random_tree_21.txt, 03_random_tree_22.txt, 03_random_tree_23.txt, 03_random_tree_24.txt, 03_random_tree_25.txt, 03_random_tree_26.txt, 03_random_tree_27.txt, 03_random_tree_28.txt, 03_random_tree_29.txt, 03_random_tree_30.txt, 03_random_tree_31.txt, 03_random_tree_32.txt, 03_random_tree_33.txt, 03_random_tree_34.txt, 03_random_tree_35.txt, 03_random_tree_36.txt, 03_random_tree_37.txt, 03_random_tree_38.txt, 03_random_tree_39.txt, 03_random_tree_40.txt, 03_random_tree_41.txt, 03_random_tree_42.txt, 03_random_tree_43.txt, 03_random_tree_44.txt, 03_random_tree_45.txt, 03_random_tree_46.txt, 03_random_tree_47.txt, 03_random_tree_48.txt, 03_random_tree_49.txt, 03_random_tree_50.txt, 03_random_tree_51.txt, 03_random_tree_52.txt, 03_random_tree_53.txt, 03_random_tree_54.txt, 03_random_tree_55.txt, 04_near_998244353_01.txt, 04_near_998244353_02.txt, 04_near_998244353_03.txt
ケース名 結果 実行時間 メモリ
01_sample_01.txt AC 63 ms 62488 KiB
01_sample_02.txt AC 50 ms 62316 KiB
01_sample_03.txt AC 48 ms 62496 KiB
01_sample_04.txt AC 48 ms 62564 KiB
01_sample_05.txt AC 50 ms 62340 KiB
02_small_01.txt AC 49 ms 62416 KiB
02_small_02.txt AC 43 ms 62448 KiB
02_small_03.txt AC 47 ms 62468 KiB
02_small_04.txt AC 49 ms 62300 KiB
02_small_05.txt AC 47 ms 62264 KiB
02_small_06.txt AC 49 ms 62208 KiB
02_small_07.txt AC 48 ms 62272 KiB
02_small_08.txt AC 49 ms 62396 KiB
02_small_09.txt AC 51 ms 62428 KiB
02_small_10.txt AC 43 ms 62620 KiB
03_random_tree_01.txt AC 2262 ms 102708 KiB
03_random_tree_02.txt AC 2286 ms 102320 KiB
03_random_tree_03.txt AC 1645 ms 97616 KiB
03_random_tree_04.txt AC 1649 ms 97856 KiB
03_random_tree_05.txt AC 2034 ms 102080 KiB
03_random_tree_06.txt AC 1977 ms 97536 KiB
03_random_tree_07.txt AC 1952 ms 100368 KiB
03_random_tree_08.txt AC 1898 ms 100064 KiB
03_random_tree_09.txt AC 1892 ms 99888 KiB
03_random_tree_10.txt AC 1979 ms 97340 KiB
03_random_tree_11.txt AC 2018 ms 103356 KiB
03_random_tree_12.txt AC 457 ms 76828 KiB
03_random_tree_13.txt AC 2042 ms 103516 KiB
03_random_tree_14.txt AC 2047 ms 102920 KiB
03_random_tree_15.txt AC 2030 ms 103248 KiB
03_random_tree_16.txt AC 2008 ms 102640 KiB
03_random_tree_17.txt AC 2043 ms 103432 KiB
03_random_tree_18.txt AC 2057 ms 103244 KiB
03_random_tree_19.txt AC 2046 ms 102704 KiB
03_random_tree_20.txt AC 2063 ms 103688 KiB
03_random_tree_21.txt AC 2073 ms 102616 KiB
03_random_tree_22.txt AC 1735 ms 92496 KiB
03_random_tree_23.txt AC 2074 ms 98528 KiB
03_random_tree_24.txt AC 2042 ms 103620 KiB
03_random_tree_25.txt AC 2206 ms 102080 KiB
03_random_tree_26.txt AC 1785 ms 98084 KiB
03_random_tree_27.txt AC 2236 ms 99276 KiB
03_random_tree_28.txt AC 1780 ms 97736 KiB
03_random_tree_29.txt AC 2231 ms 102036 KiB
03_random_tree_30.txt AC 1788 ms 97652 KiB
03_random_tree_31.txt AC 2180 ms 103980 KiB
03_random_tree_32.txt AC 1770 ms 97424 KiB
03_random_tree_33.txt AC 2112 ms 104060 KiB
03_random_tree_34.txt AC 1779 ms 97520 KiB
03_random_tree_35.txt AC 1779 ms 92828 KiB
03_random_tree_36.txt AC 1797 ms 97648 KiB
03_random_tree_37.txt AC 2141 ms 100156 KiB
03_random_tree_38.txt AC 1857 ms 98720 KiB
03_random_tree_39.txt AC 2128 ms 104008 KiB
03_random_tree_40.txt AC 1936 ms 100772 KiB
03_random_tree_41.txt AC 1722 ms 98252 KiB
03_random_tree_42.txt AC 1813 ms 97960 KiB
03_random_tree_43.txt AC 1872 ms 95496 KiB
03_random_tree_44.txt AC 1802 ms 99208 KiB
03_random_tree_45.txt AC 1759 ms 92872 KiB
03_random_tree_46.txt AC 1990 ms 97692 KiB
03_random_tree_47.txt AC 1907 ms 99748 KiB
03_random_tree_48.txt AC 2079 ms 97880 KiB
03_random_tree_49.txt AC 2010 ms 99604 KiB
03_random_tree_50.txt AC 1874 ms 94288 KiB
03_random_tree_51.txt AC 2092 ms 100396 KiB
03_random_tree_52.txt AC 2046 ms 100088 KiB
03_random_tree_53.txt AC 2313 ms 100768 KiB
03_random_tree_54.txt AC 2294 ms 103068 KiB
03_random_tree_55.txt AC 2367 ms 99064 KiB
04_near_998244353_01.txt AC 1360 ms 87168 KiB
04_near_998244353_02.txt AC 457 ms 76936 KiB
04_near_998244353_03.txt AC 443 ms 76840 KiB