PKUSC 2024 Day1 t3 獨立

zhouhuanyi發表於2024-09-05

想到了一個還比較優美的做法,首先令好 \(dp\) 後設 \(d_{x}=max(dp_{x,0},dp_{x,1})-dp_{x,0}\) 後原問題可以轉化為 \(d_{x}=max(w_{x}-\sum_{y\in son_{x}}d_{y},0)\),最後其實就是求所有方案 \(\sum_{i=1}^{n}d_{i}\) 的和,由於每一個點的期望只與子樹有關而與子樹外無關,直接對子樹外每一個乘 \(m\) 即可,令 \(dp_{x,i}\) 表示 \(d_{x}=i\) 的方案數,據此可以得到一個 \(O(nm^2)\) 的做法。

最佳化方向是比較明顯的,\(m\) 很大,但不難發現 \(dp_{x,i}\) 是一個關於 \(i\) 的低階多項式,考慮令這個多項式為 \(\sum_{i=0}^{m}a_{i}x^i\),需要支援的操作是多項式的 \(F(x)=\sum_{y=0}^{x}G(y)H(x-y)\)\(F(x)=G(m-x)\) 操作,至於求 \(\sum_{i=0}^{m}F(i),\sum_{i=0}^{m}iF(i)\) 之類的東西是非常容易的。

直接作普轉下下轉普是雙 \(\log\) 的無法接受,但是我們可以定義不平常的多項式,實驗表明 \(a_{0}[x=0]+\sum_{i=1}^{n}a_{i-1}\binom{x}{i}\)\(a_{0}[x=0]+\sum_{i=1}^{n}a_{i-1}\binom{x+i-1}{i-1}\) 都是一種可行的方式,但實際上後者會好一些,由於如果我們定義 \(\binom{0}{-1}=1\) 的話會有 \(\binom{1}{0}\not=\binom{0}{0}+\binom{0}{-1}\) 導致前一個在轉移時常數項的部分需要特殊注意,而後者由於都是 \([t^x](\frac{1}{1-t})^i\) 的形式所以無需考慮,而 \(F(x)=\sum_{y=0}^{x}G(y)H(x-y)\) 的操作在這上面就非常容易實現了,就是普通的卷積。

\(F(x)=G(m-x)\) 在這上面就稍微複雜一些,但透過複雜推導(暴力用 \(\binom{a}{b}=\binom{-a+b-1}{b}\) 與範德蒙德卷積將組合數展開)後可以發現第一種的係數為 \(\binom{m-i}{m-j}\) 第二種為 \(\binom{m+i}{m+j}\),所以普通卷積就可以解決,第二種由於規避逆元無需分討 \(m<n\) 的情況更加方便,可以直接做到 \(O(n^2\log n)\),僅需一次卷積。

一些多項式字首和或 \(F(x)=\sum_{y=0}^{x}G(y)H(x-y)\) 的形式的問題令多項式為 \(a_{0}[x=0]+\sum_{i=1}^{m}a_{i}\binom{x+i-1}{i-1}\) 有時更為方便。

相關文章