首页 > 其他 > 详细

Subarray Cuts

时间:2021-01-03 10:44:39      阅读:16      评论:0      收藏:0      [点我收藏+]

题意:

给定一个长度为n的数字串,从中选取k个不重叠的子串(可以少选),将每个串求和si
求max|s1?-?s2|?+?|s2?-?s3|?+?...?+?|sk?-?1?-?sk|(n <= 30000, k <= min(n, 200))

 

题解:
容易发现绝对值求和只与峰值和谷值有关

考虑设$dp_{i,j,k},k \in [0,3]$ 分别表示当前值位于谷、谷峰间、峰、峰谷间时的最优解的值

怎么正确地转移呢?

答案是不用管谷是否为真正的谷、峰是否为真正的峰,直接转移

因为最优解时峰值一定大于等于峰谷间、谷峰间的值;谷值一定小于等于峰谷间、谷峰间的值

为什么?

我们分类讨论下

1.峰的值小于谷峰间的值:这样的话最优解应该是以谷峰间的值为峰,峰值分为峰、峰谷间两部分

2.峰值小于谷值:此时不必将值排成峰-谷-峰的形式,最优解此时显然把值排成谷-峰的形式

其它的类比下?

 

Subarray Cuts

原文:https://www.cnblogs.com/handsome-zlk/p/14223729.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!