ログインしてください。
提出 #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 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |