DP

 与分治法最大的差别是:适用于动态规划求解的问题,经分解后得到的子问题往往不是互相独立的(即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解)

https://blog.csdn.net/na_beginning/article/details/62884939

 

1.可以从记忆化搜索推出dp表达式 ,有了表达式,即使不会循环也可以用函数递归

2.在多重背包中 注意到有些数据太大,不能作为数组下标,就选择数据小的作为数组下标来dp

 

3.可以往前推,比如在前i个能否满足k 则就要判断前i-1个 能否满足k-a[i]

4.可以往后推 比如现在站在第1个 会怎么样d[1],站在第2个d[2]=d[1]+1 ....之类的

5.至少可以转换成至多来求 见http://blog.csdn.net/cc_again/article/details/24841249

6.dp[1][i]可以表示在第i的位置上放某个物品1的方法数    dp[2][i] 则是放某个物品2.

 

 


 

凡是二元关系,就可以用图来建模。

什么是二元关系,比如A 是B的子集 ,这种分解成小问题时只涉及两个变量的,又比如 A <B ,A>B。


 

 


 


关于子集二进制表示

表示s集合和{j} 集合的交集,也就是说判断s是否含有j

表示

 

posted @ 2018-05-13 16:34  LandingGuys  阅读(383)  评论(0编辑  收藏  举报