ACM北大暑期课培训第二天

  今天继续讲的动态规划 ...

  补充几个要点:

    1. 善于利用滚动数组(可减少内存,用法与计算方向有关)

    2.升维

    3.可利用一些数据结构等方法使代码更优  (比如优先队列)

    4.一般看到数值小的 (十几以内的 ) 考虑 状压 / 搜索  

    5.状压:有时,状态相当复杂,看上去需要很多空间,比如一个数组 才能表示一个状态,那么就需要对状态进行某种编码,进行 压缩表示。 ( 比如:状态和某个集合有关,集合里可以有一些元素,没有 另一些元素,那么就可以用一个整数表示该集合,每个元素 对应于一个bit,有该元素,则该bit就是1。)

例题:3.POJ 1458 Common Subsequence

     4.OpenJ_Bailian 4152 最佳加法表达式

     5.OpenJ_Bailian 2755 神奇的口袋

     6.POJ 3624 Charm Bracelet

     7.POJ 1088 滑雪

     8.POJ 1390 Blocks

     9.POJ 2373 Dividing the Path

状态压缩动态规划:

   10.OpenJ_Bailian 4124 海贼王之伟大航路

   11.OpenJ_Bailian 4149 课程大作业

   12.POJ 1185 炮兵阵地

猜你喜欢

转载自www.cnblogs.com/l999q/p/9362559.html