DP知识点总结4 状态压缩DP(实时更新)
一、用二进制存状态
最短Hamilton路径
https://www.acwing.com/problem/content/93/
从算法分析上来看,就是一道简单的最短路线性DP,但是既然要不重不漏地走,就需要保存已经走过的路径。此时容易想到用dfs求解(解法略)。但是对于最优化问题,无非就是要求不重不漏地枚举所有状态(或状态集),因而只要用二进制把走过的路径存起来,就可以进行状态的枚举。
二、棋盘类的状态压缩DP
玉米田
https://www.acwing.com/activity/content/problem/content/1293/1/
小国王
https://www.acwing.com/problem/content/description/1066/
解题步骤:
1.根据题目要求,筛选出所有的可能行(hang)状态,存进链表state中
2.因为行之间会有制约,所以再求出所有与各行匹配的相邻行状态,存进链表h中
3.嵌套枚举行、决策变量、当前行可能状态、当前行对应的合法的上一行状态,然后再在满足题目其它条件的情况下,对f数组进行更新。