互不侵犯专题

ACM训练题:互不侵犯

一看数据范围,如果是枚举所有的棋盘情况,2^K,肯定超了,自然是要一行一行递推,而相邻这个情况用位运算会比较方便,所以用状压dp。 具体算法:dp[i][j][k]表示第i行,前i行有j个棋子,第i行的棋子情况。第一行初始化一下,符合条件的设为1.然后循环枚举出第i行,m总数的棋子,j的前一行状态,k的这一行状态,验证是否相邻,是否总数超过。 AC代码:  #include<bit

【洛谷P1896】互不侵犯【状压dp】

题目大意: 题目链接:https://www.luogu.org/problemnew/show/P1896 在 N × N N\times N N×N的棋盘里面放 K K K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上、左下、右上、右下八个方向上附近的各一个格子,共8个格子。 思路: 由于棋盘最大只有 9 × 9 9\times 9 9×9,所以可以考虑

洛谷 1896 [SCOI 2005] 互不侵犯 (状压DP)

https://www.luogu.org/problemnew/show/P1896 题意:求在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。其中 1<=N<=9, 0<=K<=N∗N 1 <= N <= 9 , 0 <= K <= N ∗ N 1 <=N <=9,\ 0 <= K <=

[bzoj1087][DP][状态压缩]互不侵犯King

Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 Input 只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N) Output 方案数。 Sample Input 3 2 Sample Output