状压dp 互不侵犯

这是一道典型的状压dp题。 我们可以将每一行棋子的状态用二进制存储。 dp[i][j][k]表示到第i行第j种状态已有k个棋子。 那么状态转移方程为dp[i+1][p][k+num[p]]+=dp[i][j][k] (p指下一行的状态)。 我们可以用位运算来判断状态是否合法,上下棋子是否攻击到。 上代码 #include<iostream> #include<cstdio> using names
相关文章
相关标签/搜索