zoukankan      html  css  js  c++  java
  • 《训练指南》——7.26

      点集配对问题:

      空间中有n个点P[0]、P[1]、P[2]、P[3]、P[4]……P[n-1],把它们配成n/2对(n是偶数),使得每个点恰好在一个点对中。要求所有点对中,两点的距离之和应尽量小。

      分析:举一个具体的例子,然后推广到一般形式。

      对于序号是1、2、3、4、5、6这六个点,我们如何对其进行子问题化然后形成状态转移方程呢?很简单,这个问题可以分解成如下的情况:

      (1)1、2点配对,然后考察3、4、5、6四个点之间形成点对距离之和的最小

      ……

      然后其实就是C(6,2)的组合问题了。

      这里我们用S集合用来表示点集,用dp[S]来记录完成S集合中配对的最优解,那么我们很容易得到如下的状态转移方程。         

      可以看到,这里既然用到了集合,那么在实际编程中就需要用到状态压缩的技巧,即用一个而二进制数来表示集合进而简便的来表征一个参数。

  • 相关阅读:
    第五章
    第四章
    第三章
    第二章
    第一章
    configparser-xml-subprocess-shutil
    sys,os,模块-正则表达式
    %----format 格式化字符串---- 生成器---- 迭代器
    python 内置函数
    python 内置函数!
  • 原文地址:https://www.cnblogs.com/rhythmic/p/5706290.html
Copyright © 2011-2022 走看看