首页 > TAG信息列表 > 互不侵犯

# P1896 [SCOI2005]互不侵犯

# P1896 [SCOI2005]互不侵犯首先,看到这一题,就知道如果不是搜索,就是DP。当然搜索是过不了的,所以就应该尝试想出一个DP的解法。而且这还是一个状压dp(状压dp在此就不细讲了) DP的前提之一当然是要找出一个可以互相递推的状态。显然,目前已使用的国王个数当然必须是状态中的一个部分,因为

题解:互不侵犯

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

[SCOI2005]互不侵犯 题解

题目链接   题目   在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 输入格式 只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N) 输出格式 所得的方案数 输入样例 3

互不侵犯

几乎是板子。 #include<bits/stdc++.h> using namespace std; #define int long long int f[10][100][1000],ans; int n,k,cnt,iab[20],num[1000]; int can[1000],bai[20],pd[1000]; void dfs(int x){ if(x==n+1){ cnt++; for(int i=1;i<=n;i++)

P1896 [SCOI2005]互不侵犯

______________________________________________________________ 和上一题差不多,注意初始化与判断即可 #include<bits/stdc++.h>using namespace std;long long int n,kk,tot,can[4096],dp[11][1096][121],cnt[4096];long long ans;int main(){ cin>>n>>kk; for(in

P1896 【[SCOI2005]互不侵犯】

这题主要分两个步骤: Section A: 初始化每一行中国王互相不攻击的情况 Section B: 考虑列和列之间国王不攻击。 解释都在代码里: #include<bits/stdc++.h>#define N 15//行数 #define M 1050//状态数 #define K 105//国王数 #define rd(x) x=read()using namespace std;typedef long

P1896 [SCOI2005]互不侵犯

题目 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 注:数据有加强(2018/4/25) 输入输出格式 输入格式:   只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N)   输出格式

互不侵犯的king

第二次做这道题,感觉思路清晰了很多~ 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 输入格式: 只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N) 输出格式: 所得的方