多校 A 層衝刺 NOIP2024 模擬賽 21

Qyun發表於2024-11-13

多校A層衝刺NOIP2024模擬賽21

T1 送信卒

簽到題

答案顯然具有單調性,考慮二分答案,然後使用跑 dj check。

時間複雜度 \(O(nm\log (nm)\log (V))\)

T2 共軛樹圖

特殊性質,樹形 DP

考慮鏈怎麼做,注意到一個性質,一條鏈上產生在 \(G\),將 \(G\) 中的邊放到原樹上是不交的,證明考慮反證法構造一個巢狀形式的邊是不可能的。

考慮 DP,設 \(f_{x,i}\) 表示考慮以 x 為根的子樹,\(x\) 可以考慮向上連 \(i\) 祖先,注意祖先不一定相鄰,但是不相鄰是不影響方案數的。

轉移考慮從下向上列舉祖先轉移即可。

\[f_{x,i}=\sum_{j=1}^{i}\prod_{v\in son_x}f_{v,i-(j-1)+1} \]

直接轉移是 \(O(n^3)\),最佳化考慮 \(f_{x,i}\)\(f_{x,i+1}\) 和式之間只會相差一項,可以字首和最佳化。

這樣時間複雜度就能降低到 \(O(n^2)\)

T3 摸魚軍訓

特殊性質,手模,線段樹二分

\(p_x\)\(x\) 最初的位置。

對於一個詢問考慮三種情況。

  • \(k>n-x\),此時答案顯然為 \(x\)

  • \(k\le cnt_{在 x 之前大於 x 的個數}\),此時答案為 \(p_x-cnt\),證明考慮氣泡排序是一個指標維護字首最大值。

  • \(k>cnt\),首先會進行第二種情況,記 \(k=k-cnt\),此時情況比較複雜,考慮簡化一下問題,此時只用考慮與 \(x\) 相比較的大小關係,將小於 \(x\) 看作 \(0\),將大於 \(x\) 看作 \(1\),手模一下發現每次氣泡排序會減去 \(x\) 後面第一個 \(1\),且其他的相對位置不變,所以可以考慮線段樹上二分找到位置。

由於第三種情況的問題轉化,得離線下來從大到小解決問題。

線段樹需要支援單點加,單調求和,樹上二分。

時間複雜度為 \(O(n\log n)\)

T4 神奇園藝師

計數題,組合數學,最佳化式子

注意到每個集合的每個質數的貢獻是獨立的,且只與指數有關。

考慮怎麼計算一個集合的一個質數的貢獻。

因為貢獻為 \(\min\{\sum_i|r_i-p|\}\),經典結論 \(p\) 為中位數,證明考慮隨便選一個位置然後移動計算貢獻變化量。

這樣太傻了,考慮拆貢獻,由於 \(p\) 為中位數,所有小於 p 和大於 p 的個數相等,所以能兩兩匹配構成一個線段,而這兩個的貢獻和就為這個線段的長度,所以可以考慮字首和差分拆貢獻,即在中位數左邊的貢獻為 \(-r_i\) 在中位數右邊的貢獻為 \(r_i\)( 這樣如果沒有這個質因子,則不會有貢獻 ),考慮分開討論這兩種情況,然後可以列舉兩側的個數乘上組合數即可。這樣就能得到一個 \(O(n^3)\) 的做法。

考慮推式子最佳化。

上式為

\[\sum_a\sum_br_i([a>b]-[a<b])\binom{i-1}{a}\binom{n-i}{b} \]

兩個和式的關聯太弱了,考慮分討一種 \(a,b\) 之間的關係然後列舉它們之間的差值( 設為 \(d\) )。

以下為 \(a<b\) 的情況,省略了貢獻

\[\begin{aligned} &\sum_{d=1}^{n-i}\sum_{a=0}^{\min(i-1,n-i-d)}\binom{i-1}{a}\binom{n-i}{a+d} \\ =&\sum_{d=1}^{n-i}\sum_{a=0}^{\min(i-1,n-i-d)}\binom{i-1}{a}\binom{n-i}{n-i-a-d} \\ &注意到後面一個和式構成了範德蒙卷積的形式 \\ =&\sum_{d=1}^{n-i}\binom{n-1}{n-i-d} \\ =&\sum_{d=0}^{n-i-1}\binom{n-1}{d} \end{aligned} \]

同理可以推出 \(a>b\) 的方案數為 \(\sum_{d=}^{i-2}\binom{n-1}{d}\)

發現上指標不變,所以可以字首和預處理組合數。

\(s_i=\sum_{d=0}^i\binom{n-1}{d}\),則貢獻為 \(r_i(s_{i-2}-s_{n-i-1})\)

由於是指數不會太大,可以使用桶排。

時間複雜度為 \(O(n\log n)\)

p

相關文章