[2020多校A层11.25]最大K段和(反悔贪心)
[2020多校A層11.25]最大K段和
對于一個長度為n的序列,求解不相交的k段使得他們的總和最大,輸出最大值。
 n<=1e5
對于這種問題,我們沒有思路求解,可以考慮枚舉,發現無法枚舉,然后考慮dp,發現可以得到一個大概O(n3/n2)O(n^3/n^2)O(n3/n2)的做法,然后沒法繼續優化了,沒有更多的性質了。
 因為題面沒有更多的性質了,那么我們再轉換思路,考慮貪心求解,于是我們按照貪心的思路,每次求解當前的最大子段和,然后如果直接這樣肯定是不行的,所以我們需要支持讓最大二段和變成最大子段和問題,然后我們通過這個過程使得貪心的當前最優解變成更大規模的最優解。然后其實這是一個套路,就是求解多個東西總和的最大值,然后要滿足一定要求,也就是說彼此之間是有影響的。
然后這道題的反悔策略就是讓當前的最大子段和變為負數,然后這樣的最大子段和就含有將其刪掉的部分了。然后具體地我們需要證明當前最大子段和一定是最大二段和,因為最大子段和有任意前綴后綴為正的性質,所以變為負數之后,任意前綴后綴為負數,所以現在的最大子段和一定和原來的最大子段和不會相交,只可能再最大子段和內部或者外部,所以我們證明了當前的最大子段和是最大二段和,那么重復這個過程就可以得到最大k段和。
所以需要支持查詢最大子段和和區間取相反數的操作,所以線段樹可以支持,讓每個線段樹維護當前區間的正信息和反信息,然后區間修改就讓正反交換,然后打標記處理。
總結
以上是生活随笔為你收集整理的[2020多校A层11.25]最大K段和(反悔贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 昨日重现的意思 昨日重现的含义
- 下一篇: 倏怎么读 倏的拼音是什么
