背景:在一次模擬賽中,Deepinc、DuanYue和Remarkable分別用了三個式子表示了同一個東西,而他們的式子目測毫無關係,並且是從不一樣的角度分析的,致使他們的作法確定是正確的,但卻各不相同,咱們來看一下。
數據結構
Deepinc:$ans=\frac{\sum\limits_{i=1}^{m}(i^k-(i-1)^k)*w[i]}{m^k}*(n-k+1)$spa
DuanYue:$g[x]=\sum\limits_{i=1}^{k}C_k^i(x-1)^{k-i}$code
$ans=\frac{\sum\limits_{i=1}^{m}g(i)*w[i]}{m^k}*(n-k+1)$遞歸
Remarkable:$Max(x)=\sum\limits_{i=0}^{k-1}x^i(x-1)^{k-1-i}$數學
$ans=\frac{\sum\limits_{i=1}^{m}Max(i)*w[i]}{m^k}*(n-k+1)$it
下面咱們來證實它們是一個式子。class
證實:遍歷
首先咱們很容易發現一些相同的部分,那麼$n-k+1$和$m^k$這些部分咱們忽略掉。並且最後的式子中都有一個$\sum\limits_{i=1}^m$的統計答案式子,那麼咱們將求和項證實相等便可獲得三個式子相等。im
因此通過上述過程咱們的問題變爲:證實$x^k-(x-1)^k(1)=\sum\limits_{i=0}^{k-1}x^i(x-1)^{k-i-1}(2)=\sum\limits_{i=1}^{k}C_k^i(x-1)^{k-i}(3)$便可。統計
首先若是你有n次方差公式的話(1)=(2)應該能夠秒掉,那麼咱們來證實一下:
$a^k-b^k=(a-b)\sum\limits_{i=0}^{k-1}a^ib^{k-i-1}$
$a^k-b^k=a^k-a^{k-1}b+a^{k-1}b-a^{k-2}b^2+a^{k-2}b^2-……+ab^{k-1}-b^k$
$=a^{k-1}(a-b)+a^{k-2}b(a-b)+……+b^{k-1}(a-b)$
$=(a-b)\sum\limits_{i=0}^{k-1}a^ib^{k-1-i}$
而後把a套上x,b套上(x-1)一消,(1)=(2)就證完了。
接下來證實(3)=(1),中間有用到二項式定理:
$\sum\limits_{i=1}^{k}C_k^i(x-1)^{k-i}=\sum\limits_{i=1}^{k}C_k^i(x-1)^{k-i}1^i$
$=\sum\limits_{i=0}^{k}C_k^i(x-1)^{k-i}1^i-C_k^0(x-1)^{k}1^0$
$=x^k-(x-1)^k$
因此這三個式子本質相等。
背景:作模擬題有一道Dsu on the tree,而後還要啓發式合併數據結構。而後就引人深思了……
1)數據結構(線段樹,平衡樹)啓發式合併的複雜度證實:
因爲啓發式合併是將小的插入大的,那麼新集合大小至少爲小的2倍,也就是小集合的大小翻倍了,但是咱們進行操做最多讓集合大小變爲$n$,而每次翻倍,那麼只能操做$logn$次,而一次操做要$O(nlogn)$,因此就是$O(nlog^2n)$嘍。
2)樹鏈剖分的複雜度證實:
先來幾條性質(定義(u,v)表示一條有向邊,size爲子樹大小):
1>若是$(x,y)$爲輕邊,則$size[y]<=size[x]/2$
證實:反證法。設$size[y]>size[x]/2$,則沒有任何其餘子樹$size$大於y節點,(由於y一我的都超了一半,別人加一塊兒都打不過它),那麼$(x,y)$爲重邊,與$(x,y)$輕邊矛盾。
2>從根到某一點x的路徑上輕邊個數很少於$O(logn)$
證實:首先x爲葉子時個數最多,因爲性質1,每沿輕邊向下遞歸一層,則子樹大小減半,最多遞歸$O(logn)$層,因此命題成立。
3>若是咱們定義,連續的重邊組成重鏈,那麼從根到某一點x的路徑上重鏈數很少於$O(logn)$
證實:重鏈的端點必定是輕邊,不然還會組成更長的重鏈,而由性質2,則可得命題成立。
結合性質二、3,咱們樹剖時通常對重鏈用線段樹,那麼一次操做就是$O(log^2n)$,對輕邊則跳,那麼一次操做是$O(logn)$,那麼一次操做是$O(log^2n)$,操做數爲m,通常而言n,m同階,總複雜度通常爲$O(nlog^2n)$。(固然這是我拿線段樹舉的例子,若是是樹套樹這種東西就按照一樣的思路算算唄)。
3)Dsu on the tree 複雜度證實:
由上述2)性質2>可知,咱們處理一個點時,因爲對輕邊處理兩次,重邊是遍歷的複雜度,那麼在以該點爲根子樹中,一個輕兒子最多被合併$O(logn)$次(由於這個輕兒子到該點最多有$O(logn)$條輕邊,而只有輕邊多作了貢獻),那麼複雜度就是$O(logn)$,總共就是
$O(nlogn)$。