Comet OJ - Contest #2 簡要題解


Comet OJ - Contest #2 簡要題解

cometoj

A

模擬,復雜度是對數級的。
code

B

首先易知\(p\in[l,r]\),且最終的利潤關於\(p\)的表達式為\(\frac{(p-l)(\frac{L+R}{2}-p)}{r-l}\),二次函數求最值即可。
code

C

枚舉獨立集點數即可。\(\sum_{i=0}^n\binom nip^{\binom i2}\)
code

D

樹上的任意一個滿足\(|S|\ge2\)的點集\(S\)均有一個唯一的中心,即直徑的中點(可能是一個點也可能是一條邊),因此可以在該點集的中心處計算該點集的貢獻。
枚舉中心\(i\),枚舉直徑長度\(j\),要求在\(i\)點至少兩棵不同子樹里選與\(i\)距離恰好為\(j\)的點,距離小於\(j\)的點任選。復雜度\(O(n^2)\)
code

E

原圖是一片環套樹森林。首先考慮把森林縮掉,對於一個葉子節點\(v\)與其父親\(u\),可以令\(p_u\gets p_u+(1-p_u)p_vs_v\),並刪除點\(v\)。如此操作后圖中就只剩下若干個環了。
對於環上的任意一點計算答案,可以先把這個點的出邊斷掉,再視作一條鏈暴力計算,復雜度\(O(n^2)\)。考慮當前一個人以\(x\)的概率醒來的時候,后一個人醒來的概率可以表示成\(ax+b\)的形式,其中\(a,b\)均為只與當前這個人有關的常量。不難發現這種運算滿足結合率,因此對環維護前后綴,每次\(O(1)\)合並答案即可,復雜度\(O(n)\)
比賽的時候無腦上了棵線段樹,做法上沒有本質區別。code

F

被修修教育了。。。
我們要求對於每個\(i\),將第\(i\)個二項式除去后與\(a_i\)點乘的結果。

考慮分治。設$$L(x)=\prod_{i=1}^{n/2}(p_ix+1-p_i)=\sum_{i=0}^{n/2}l_ix^i\R(x)=\prod_{i=n/2+1}^{n}(p_ix+1-p_i)=\sum_{i=0}^{n-n/2}r_ix^i$$

假設我們要求\(i\in[0,n/2]\)的答案,由於最終答案一定是\(\sum_{j=0}^{n/2-1}\sum_{k=0}^{n-n/2}l'_jr_ka_{j+k}\)的形式,而\(r_k\)對於左邊的所有\(i\)都是定值,因此可以考慮令\(a'_j=\sum_{k=0}^{n-n/2}r_ka_{j+k}\)然后用新的\(a'\)遞歸左邊,右邊同理。

這樣就只需要在每層分治時做兩次卷積就好了,復雜度仍然是\(O(n\log^2n)\),不過常數優秀不少。

code


以下是原題解。

orz suika
先求出\(F(x)=\prod_{i=1}^n(p_ix+1-p_i)\),然后對於每個\(i\),計算\(\frac{F(x)}{p_ix+1-p_i}\)\(a_i\)數組點乘的結果。

為了方便處理,我們令\(w_i=\frac{1-p_i}{p_i}\)(題目保證\(p_i\in(0,1]\)),於是\(F(x)=\prod_{i=1}^np_i(x+w_i)\)。由於\(\prod_{i=1}^np_i\)是常數,故下文中均將其忽略。

不難發現問題大致是個退背包的模型,即先往背包里加入\(n\)個物品,然后每次刪去一個。

假設當前求的是第\(k\)個物品的答案,考慮設$$F(x)=\prod_{i=1}^n(x+w_i)=\sum_{i=0}^nf_ix^i\G(x)=\prod_{i=1,i\neq k}^n(x+w_i)=\sum_{i=0}^{n-1}g_ix^i$$
那么就有遞推式

\[g_i=f_{i+1}-g_{i+1}w_k(0\le i<n,g_n=0) \]

將這個遞推式暴力展開

\[g_i=\sum_{j=0}^{n-1-i}(-w_k)^jf_{i+j+1} \]

於是我們要求的東西就變成了

\[ans_k=\sum_{i=0}^{n-1}a_ig_i=\sum_{i=0}^{n-1}a_i\sum_{j=0}^{n-1-i}(-w_k)^jf_{i+j+1}\\=\sum_{j=0}^{n-1}(-w_k)^j\sum_{i=0}^{n-1-j}a_if_{i+j+1} \]

\(coef_j=\sum_{i=0}^{n-1-j}a_if_{i+j+1}\),則\(ans_k=\sum_{j=0}^{n-1}coef_j(-w_k)^j\),多項式多點求值即可。求\(coef_j\)的過程只需要一個卷積,因此總復雜度\(O(n\log^2n)\)
code


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM