bzoj 5369: [Pkusc2018]最大前缀和
生活随笔
收集整理的這篇文章主要介紹了
bzoj 5369: [Pkusc2018]最大前缀和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Description
小C是一個算法競賽愛好者,有一天小C遇到了一個非常難的問題:求一個序列的最大子段和。
但是小C并不會做這個題,于是小C決定把序列隨機打亂,然后取序列的最大前綴和作為答案。
小C是一個非常有自知之明的人,他知道自己的算法完全不對,所以并不關心正確率,他只關心求出的解的期望值,
現在請你幫他解決這個問題,由于答案可能非常復雜,所以你只需要輸出答案乘上n!后對998244353取模的值,顯然這是個整數。
注:最大前綴和的定義:i∈[1,n],Sigma(aj)的最大值,其中1<=j<=i
Solution
注意到前綴和的取值只有 \(2^n\) 種.
然后可以枚舉每一個集合的元素當最大前綴和 , 那么這個集合的元素排列之后每一個后綴都必須大于 \(0\) , 且這個集合的補集排列之后必須保證每一個前綴和都小于 \(0\).
那么狀壓 \(DP\) 就行了 , 設 \(f[i]\) 表示集合 \(i\) 作為最大前綴和且排列之后每個后綴都大于 \(0\) 的方案數 , \(g[i]\) 表示集合 \(i\) 中元素排列之后每個前綴都小于 \(0\) 的方案數.
強制 \(f,g\) 必須在合法的時候才能轉移就行了.
轉載于:https://www.cnblogs.com/Yuzao/p/9304011.html
總結
以上是生活随笔為你收集整理的bzoj 5369: [Pkusc2018]最大前缀和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在word中,整篇文章想要在每一章另起一
- 下一篇: 需求心得