題目描述
給一棵樹,求以每個點為根時下列式子的值。
題解
當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...