UR 3 鏈式反應

2021-10-07 05:46:31 字數 3405 閱讀 5120

問一棵有 1 ~ n 個不同的點的樹有多少種形態,點分黑白點,黑點一定為葉子節點,白點要麼是葉子,要麼下面可以接若干個黑點以及兩個白點。

列列dp式:

f n=

[n=1

]+12

∑t∈g

∑i=1

ncn−

1tcn

−t−1

ifif

n−t−

i=[n

=1]+

12(n

−1)!

∑t∈g

gn−t

−1t!

gn=1

2∑i=

1nfi

fn−i

i!(n

−i)!

\begin f_n &=[n=1]+ \frac \sum_ \sum_^n c_^ c_^ f_ f_ \\ &=[n=1]+\frac 12(n-1)! \sum_ \frac}\\ g_n&=\frac \sum_^n \frac} \end

fn​gn​

​=[n

=1]+

21​t

∈g∑​

i=1∑

n​cn

−1t​

cn−t

−1i​

fi​f

n−t−

i​=[

n=1]

+21​

(n−1

)!t∈

g∑​t

!gn−

t−1​

​=21

​i=1

∑n​i

!(n−

i)!f

i​fn

−i​​

​那麼就可以分治fft解決啦!

我寫的分治fft是o(n

log⁡2n

log⁡

log⁡n)

o(\frac )

o(loglognn

log2n​

)的,並且沒有加上常數優化,但還是跑了uoj的rk1。

#include

#define i inline

#define fi first

#define se second

#define ll long long

#define mp make_pair

#define reg register int

#define pii pair

#define fo(i, a, b) for(int i = a; i <= b; i++)

#define fd(i, a, b) for(reg i = a; i >= b; i--)

#define ull unsigned long long

#define cr const reg&

using

namespace std;

const

int inf =

2147483647

;const

int mod =

998244353

;const

int n =

1<<18;

const

int b =16;

i int

_max

(cr x, cr y)

i int

_min

(cr x, cr y)

i ll read()

while

(ch >=

'0'&& ch <=

'9') x =

(x <<3)

+(x <<1)

+(ch ^48)

, ch =

getchar()

;return x * f;

}i void

ptt(ll x)

i void

put(ll x)

i void

pr1(ll x)

i void

pr2(ll x)

i int

pow_mod

(reg a, reg k)

ull p[n <<1]

, g[n]

, f[n]

;int a[n <<1]

, r[n <<1]

, w[n <<1]

, jc[n]

, inv[n]

, iv[n]

;int mem1[n *10]

, mem2[n *10]

, mem3[n *10]

, mem4[n *10]

;i int

pre(cr n)

return len;

}i int

pre(cr n)

i void

dft(

int y[

], cr len)

i void

idft

(int y[

], cr len)

i void

solve

(cr l, cr r,

int*memp1,

int*memp2,

int*me***,

int*memp4)

return;}

int len =

(r - l +1)

/ b, ll = len <<1;

pre(ll -1)

;int

*h1[b]

,*h2[b]

,*h3[b]

,*h4[b];fo

(i,0

, b -1)

if(l ==0)

}fo(i,0

, b -1)

dft(h3[i]

, ll)

,dft

(h4[i]

, ll);}

else

fo(j,

0, ll -

1) h1[b -1]

[j]=0;

fo(j,

0, len -

1) h1[b -1]

[j]= g[l + i * len + j]

;dft

(h1[b -1]

, ll);fo

(j, i +

1, b -1)

fo(k,

0, ll -

1) h2[j]

[k]=

(h2[j]

[k]+

(ll)h1[b -1]

[k]* h1[j - i -1]

[k])

% mod;

}pre

(ll -1)

;if(l ==0)

}char ss[n]

;int

main()

UR 3 鏈式反應

好部落格 樹形結構 列舉根節點的兒子是哪兩個 然後列出方程 然後有egf的影子!倍增?泰勒展開可以把未知數從函式裡拿出來!並且變成1次項,只要計算h f0 x 以及h f0 x 考慮把f x 有關項移到左邊 想辦法把導數或者積分放到等號右邊 乘上乙個關鍵的v x 因為這個東西可以和f x 的係數湊成...

Django學習筆記3 HTTP請求的url路由

剛才的 sales 應用裡面有個 views.py檔案。這個檔案裡面通常是寫處理http請求的 的。我們假設凡是瀏覽器訪問的http請求的 url 位址是 sales orders 就由 views.py 裡面的函式listorders來處理,返回一段字串給瀏覽器。開啟 views.py 在裡面加入...

爬蟲基礎3 反爬手段

1.user agent user agent中文名為使用者 簡稱 ua,它是乙個特殊字串頭,使得伺服器能夠識別客戶使用的作業系統及版本 cpu 型別 瀏覽器及版本 瀏覽器渲染引擎 瀏覽器語言 瀏覽器外掛程式等。2.ip 西次 快 什麼是高匿名 匿名和透明 它們有什麼區別?1.使用透明 ip,對方伺...