Codeforces Round #715 (Div. 2) C. The Sports Festival 区间dp
傳送門
文章目錄
- 題意:
- 思路:
題意:
給定一個序列aaa,每次拿出來任意一個數(注意每次選的數不同),讓后定義max=max(a1,a2,...,ai)max=max(a_1,a_2,...,a_i)max=max(a1?,a2?,...,ai?),min=min(a1,a2,...,ai)min=min(a_1,a_2,...,a_i)min=min(a1?,a2?,...,ai?),di=max?mind_i=max-mindi?=max?min,求min(d1+d2+,...,+dn)min(d_1+d_2+,...,+d_n)min(d1?+d2?+,...,+dn?)。
思路:
考慮將aaa數組排序,我們發現排序之后只剩一個區間合并的問題了,即轉換成將一個數添加到一個區間,且這個數一定與這個區間是相鄰的,花費就是a[r]?a[l]a[r]-a[l]a[r]?a[l]。說到這里很明顯就是個去區間dpdpdp了,定義f[l][r]f[l][r]f[l][r]為[l,r][l,r][l,r]的最小花費,考慮怎么擴展區間長度,比較容易想到如下轉移方程:f[l][r]=min(f[l][r],min(f[l][r?1],f[l+1][r])+a[r]?a[l])f[l][r]=min(f[l][r],min(f[l][r-1],f[l+1][r])+a[r]-a[l])f[l][r]=min(f[l][r],min(f[l][r?1],f[l+1][r])+a[r]?a[l])
不可能從中間轉移,因為從中間合并兩個長度的區間一定不優于從兩頭轉移來的,所以不需要枚舉[l,r][l,r][l,r]轉移,復雜度為O(N2)O(N^2)O(N2)。
總結
以上是生活随笔為你收集整理的Codeforces Round #715 (Div. 2) C. The Sports Festival 区间dp的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吉利银河 E8 性能表现曝光:外媒 KM
- 下一篇: 借助 SpaceX 火箭,鸿海发射两颗“