[hdu] 5696 区间的价值 || 序列分治
生活随笔
收集整理的這篇文章主要介紹了
[hdu] 5696 区间的价值 || 序列分治
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原題
我們定義“區間的價值”為一段區間的最大值*最小值。
一個區間左端點在L,右端點在R,那么該區間的長度為(R?L+1)。
求長度分別為1~n的區間的最大價值。
保證數據隨機
因為保證數據隨機,所以我們可以考慮用區間的最大值把這個區間分為兩個部分,這樣答案的貢獻就有兩種情況。
1、在同一個區間里
2、跨過最大值,在兩個區間里
情況1通過遞歸就變成了情況2,而情況二我們通過two-points來完成。記錄l指針和r指針,因為所求為最大值,所以選取l和r指針較大的內個加入,并每次更新答案即可。
因為數據隨機,所以O(nlogn)
轉載于:https://www.cnblogs.com/mrha/p/8031212.html
總結
以上是生活随笔為你收集整理的[hdu] 5696 区间的价值 || 序列分治的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可打开可关闭的选项卡,单纯无污染,改改样
- 下一篇: [CentOS7] 常用工具 之 差异备