5.杨沐《浅析信息学中的“分”与“合”》.pptVIP

  • 3
  • 0
  • 约9.75千字
  • 约 27页
  • 2018-12-09 发布于河南
  • 举报

5.杨沐《浅析信息学中的“分”与“合”》.ppt

5.杨沐《浅析信息学中的“分”与“合”》

题目简述如下 给定一个长度为N的正整数序列。 求一个子序列,使得原序列中任意长度为M的子串中被选出的元素不超过K个。 要求选出的元素之和最大。 数据范围: 有不超过1000个数 K,M的范围不超过100 下面请看一个例子(出现数据)。 有7,3,4等这10个数,每长度为4的区间被选出的元素个数不能超过2个。 对于这个数据,最优的答案如下,红色字体表示被选出的元素。 可以看到,对于任意长度为4的区间,被选出的元素个数都不超过2个(一路点),而这些选出的数字之和最大,因此是本样例的最优解。 初看此题,我们发现了题目的最优子结构性质和无后效性,因此首先考虑动态规划(点),它是解决这类最优化问题的一把利刃,但是由于题目条件过于苛刻,普通动态规划完全无法胜任,而基于状态压缩的动态规划时间复杂度甚至高达O(2^MN)(点),当M、N为极限数据时就是O(2^100*1000),这根本无法在时限内出解(点)。 既然动态规划无法解决此题,我们又很自然的想到了十分适用于一维区间操作的线段树(点),可是,经过多次尝试最终发现这种思路也是行不通的(点)。 常规算法已无路可走,此时应该怎么办呢(点)?我们可以使用“分”的思想来帮助解题(点)! 动态规划之所以不可行,原因在于——题目中K和M的范围太大了! 利用“分”的思想,我们尝试限制K,令K=1,也就是对于长度为M的子串,最多只选一个元素作为原题的

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档