找到大小为k的子集,使得每对连续元素之间的距离之和最小

时间:2014-07-01 13:07:20

标签: sum size subset

给定 N 非负整数的 X ,找到大小为 K 的子集 L L 的每对连续元素之间的距离之和(由 S(L)表示)最小, L 不包含重复项。我们知道2 <= N <= 10^52 <= K < N X 未排序且可能包含重复项。

注意:

  1. 两个连续元素 Xi Xj 之间的距离(对于 K 中的 i > - 1]; [ i + 1, K ]中的 j 表示为d(i, j),这是绝对值 Xi Xj 的区别:|Xj - Xi|

  2. 必须保留原始集合 S 的元素的相对顺序,即不允许 X 进行排序。类似的问题被问到here,但所有建议的解决方案都需要排序程序。

      

    示例:

         
        

    输入:

             
          

    S = {1,3,10,3,6,7,1}

                 

    K = 4

        
             

    输出:

             
          

    L = {1,3,6,7}( S(L) = d (1,2)+ d (2,3)+ d (3,4)= 2 + 3 + 1 = 6)。

        
      
  3. 请注意,两组 L1 = {3,6,1,7}和 L = {1,3,6,7}是相同的,但每组set得到不同的和( S(L1) = 3 + 5 + 6 = 14&gt; 6 = S(L))。因此,正确的总和必须是 L 排序后获得的总和。

0 个答案:

没有答案