題解 - CF1553I


靠着手速和沒有 FST 上了大分,很開心(

場上沒時間做 I,還看錯題了。感覺再給我 30min 就可以過了。

\(a\) 序列進行划分,每一段內的 \(a\) 值都相等且這個 \(a\) 值等於段的長度。一個序列最多存在一個划分。設這個划分的長度為 \(f_1,f_2,f_3,...,f_m\)

划分內要求是一個上升/下降段。而划分外部要求相鄰兩個不能組成一個連續段。

自然想到容斥。欽定一些相鄰段能組成連續段,就把 \(f\) 划分成幾個上升/下降段。設這個划分的長度為 \(k\),那么方案數即為 \(k! 2^{\text{長度不為 1 的段個數}}\),容斥系數為 \((-1)^{m-k}\)

分治 \(\rm FFT\) 即可(對於一個分治中心 維護 l 和 l-1 是否被欽定r 和 r+1 是否被欽定 的關於段數的多項式)

實際實現中,把 "長度和不為 1 的段個數" 轉化成了 \(k\) 減去 "長度和為 1 的段的個數",長度和為 1 的段只有可能是長度為 1 的連續段,很好處理。

aclink


免責聲明!

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



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