Crash 的文明世界

2022-07-13 20:03:13 字數 1331 閱讀 4141

題目描述

給一棵樹,求以每個點為根時下列式子的值。

題解

當k=1時這就是乙個經典的換根dp問題。

所以這道題還是要用換根dp解決。

部分分做法:

考慮轉移時是這樣的乙個形式(圖是抄的)。

用二項式定理展開就可以nk2做了。

觀察到結果是乙個xk的形式。

然後這個可以用斯特林數代換。

我們可以先求出每個點的後面的東西,在乘上前面的就是答案了。

這是個組合數,可以用組合數的遞推解決。

**

#include#include

#define n 50009

#define kk 151

using

namespace

std;

typedef

long

long

ll;const

int mod=10007

;int

dp[n][kk],f[kk],h[kk],jie[kk];

intn,m,a[n],tot,head[n],k,s[kk][kk];

inline ll rd()

while(isdigit(c))

return f?-x:x;

}struct edgee[n<<1

];inline

void add(int u,int

v)void dfs(int u,int

fa)}

void dfs2(int u,int

fa)}

intmain()

s[0][0]=1

;

for(int i=1;i<=k;++i)

jie[

0]=1

;

for(int i=1;i<=k;++i)jie[i]=jie[i-1]*i%mod;

dfs(

1,0);

dfs2(

1,0);

for(int i=1;i<=n;++i)

return0;

}

題解 Crash 的文明世界

題目傳送門 給出乙個 n 個點的樹,和常數 k 對於 forall i in 1,n 求出 sum text i,j k n le 5 times 10 4,k le 150 真的很妙,一開始完全沒有思路,看了 texttt 的題解之後瞬間懂了。我們考慮對於 i 如何計算答案,我們發現這個指數非常不...

BZOJ2159 Crash 的文明世界

這篇寫差分表和斯特林數介紹的不錯 這題就是要計算這個東西 s i j 1n dist i,j ks i j 1nd ist i,j k這個東西很難維護,我們把di st i j k d is t i,j k拆一下s u v kj 0d u,v d u,v j s u v j 0 kd u v d u...

bzoj 2159 Crash 的文明世界

又來做了一次。之前寫得實在是太差了,這次寫好點吧。這裡介紹用斯特林數展開的方法 如果不會的可以先看看這裡 我們知道xn k 0 ns n k k c x,k x n sum ns n,k k c x,k xn k 0n s n,k k c x k 因此,如果想知道答案,其實就是要知道對於每乙個k k...