Codeforces Round #715 (Div. 2) C. The Sports Festival 区间dp
傳送門
文章目錄
- 題意:
- 思路:
題意:
給定一個(gè)序列aaa,每次拿出來任意一個(gè)數(shù)(注意每次選的數(shù)不同),讓后定義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數(shù)組排序,我們發(fā)現(xiàn)排序之后只剩一個(gè)區(qū)間合并的問題了,即轉(zhuǎn)換成將一個(gè)數(shù)添加到一個(gè)區(qū)間,且這個(gè)數(shù)一定與這個(gè)區(qū)間是相鄰的,花費(fèi)就是a[r]?a[l]a[r]-a[l]a[r]?a[l]。說到這里很明顯就是個(gè)去區(qū)間dpdpdp了,定義f[l][r]f[l][r]f[l][r]為[l,r][l,r][l,r]的最小花費(fèi),考慮怎么擴(kuò)展區(qū)間長度,比較容易想到如下轉(zhuǎn)移方程: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])
不可能從中間轉(zhuǎn)移,因?yàn)閺闹虚g合并兩個(gè)長度的區(qū)間一定不優(yōu)于從兩頭轉(zhuǎn)移來的,所以不需要枚舉[l,r][l,r][l,r]轉(zhuǎn)移,復(fù)雜度為O(N2)O(N^2)O(N2)。
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #715 (Div. 2) C. The Sports Festival 区间dp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吉利银河 E8 性能表现曝光:外媒 KM
- 下一篇: 借助 SpaceX 火箭,鸿海发射两颗“