JZOJ 省選模擬 夕張的改造 kaisou

2021-10-05 05:44:30 字數 2353 閱讀 5923

description

提督們驚奇地發現,2019 年實裝的改造非常少。

經調查,原來是改造廠的廠長於八日剋扣了其他艦娘改造的圖紙,並且在 2020 年的第乙個月利用這些圖紙進行了華麗的改造,一共有三種形態,於八日改二,於八日改二特,於八日改二丁,對空、對陸、

對潛、開幕雷、五裝備格,無所不能。鎮守府雪菜八萬鋼慘遭退役。

艦娘的結構可以看成一棵 n 個點的樹,點編號為 0 ∼ n−1。使用一張圖紙可以把樹中的某一條邊去掉,再加上一條邊,使得它依然是一棵樹。

現在,於八日想在 2020 年繼續拿走別的艦娘的圖紙對自己進行改造,她一共拿走了 k 張圖紙。她想知道,自己經過接下來的改造之後,總共會有多少種形態。兩個形態不同,表示有一條邊 (x,y) 在第一棵

樹**現,在另一棵樹中不出現。

input

第一行兩個整數 n,k,表示樹的結點數和圖紙數。

第二行 n − 1 個整數 fi 描述樹的形態,表示編號為 i 的結點父親為 fi 。

output

一行乙個整數表示答案,%998244353 輸出。

sample input

樣例輸入1:

3 10 0

樣例輸入2:

4 10 1 2

樣例輸入3:

6 10 1 2 2 0

sample output

樣例輸出1:

3樣例輸出2:

8樣例輸出3:

28data constraint

對於所有資料,滿足 1 ≤ n ≤ 50 , 0 ≤ k ≤ n。

對於 20% 的資料,k = 0。其中測試點 1,k = 0。

對於 20% 的資料 (測試點 1 ∼ 4),fi =0。

對於 30% 的資料 (測試點 1 ∼ 6),n ≤ 5。

生成樹計數?上矩陣樹定理

定義一條邊 (u,v) 的權值:若 (u,v) 在原樹中,權值為 1,否則為 x。

我們要求的就是邊權之積 ≤xk 的生成樹個數。

顯然,x0……xk的係數之和即為答案

我們可以用拉格朗日插值法解決

#include

#define ll long long

using

namespace std;

const

int n=

155,mod=

998244353

;bool bz[n]

[n];

int a[n]

[n],inv[n]

,ans,n,m,c[n]

,d[n]

,h[n]

;void

add(

int&x,

int y)

void

del(

int&x,

int y)

intmul

(int x,

int y)

intpower

(int x,

int y)

return yjy;

}int

gauss

(int n)if(

!x)continue;if

(x!=i) yjy=mod-yjy,

swap

(a[x]

,a[i]);

int inv=

power

(a[i]

[i],mod-2)

;for

(int j=i+

1; j<=n; j++)}

for(

int i=

1; i<=n; i++

) yjy=

mul(yjy,a[i]

[i])

;return yjy;

}int

calc

(int bas)

return

gauss

(n-1);

}int

main()

for(

int i=

1; i<=n; i++

)for

(int k=

0; k<=n; k++

) c[k]

=h[k];}

for(

int j=

0; j<=n; j++

)add

(d[j]

,mul

(c[j]

,y));}

for(

int i=

0; i<=m; i++

)add

(ans,d[i]);

printf

("%d\n"

,ans)

;}

JZOJ 省選模擬 string

一行乙個整數表示答案。sample input 樣例輸入 3 3sample output 樣例輸出 首先我們忽略重複的字串,定義 n 表示長度為 n 的回文串,或由兩個回文串拼成的字串數量。那麼可以通過列舉第乙個回文串的長度 可以為 0 可以算出f n 但是正如剛才所說,會對如 abaaba 這樣...

JZOJ 省選模擬 Moorio Kart

description 由於目前可供奶牛們使用的約會 並沒有給 farmer john 留下深刻印象,他決定推出乙個基於新匹配演算法的奶牛交友 該演算法可基於公牛和母牛間的共同興趣對公牛和母牛進行匹配。bessie 在尋找情人節 barn dance 的合作夥伴時,決定試用這個 在註冊賬戶之後,fj...

JZOJ 省選模擬 挖寶

description 有乙個挖寶遊戲,它在一棵 n 個點的樹上進行,寶藏埋在某個未知的點 每次挖掘乙個點 u,玩家得到的反饋資訊是乙個數值 d,表示 u 號點到 號點簡單路徑上的邊數。這個遊戲會進行 q 次,每次遊戲藏寶的位置不一定相同。你作為一名優秀的 er,對自己無比自信。你希望用最少的挖掘次...