状压dp是将每种状态都压缩成用一个二进制串,然后利用位运算进行操作的dp,而凡是dp都需要进行状态转移 对于简单的dp问题只需要一个二维数组dp[ i ][ j ]就能解决 具体操作为首先把状态压缩为二进制串, 然后对第一行进行初始化, 再利用三个for循环进行状态转移(第一层for循环控制行的前进,第二个和第三个for循环控制本行和上一行的状态) 利用状态转移对二维数组进行不断的更新(可以想到其实就是在不断更新填写一个二维表) 而复杂一点的dp问题就需要一个三维数组dp[ i ][ k ][…
https://vjudge.net/contest/171652#problem/K [题意] 小岛上有n个人,有些是好人(一定是真话),有些是坏人(可能是真话也可能是假话),现在要判断最多有多少好人 每个人说话有四种形式: 1. Person i: Person x is a good guy. 2. Person i: Person x is a bad guy. 3. Person i: If person x is a good guy, person y is a good guy.…