P1896 [SCOI2005]互不侵犯 状压dp】的更多相关文章

正解:状压dp 解题报告: 看到是四川省选的时候我心里慌得一批TT然后看到难度之后放下心来觉得大概没有那么难 事实证明我还是too young too simple了QAQ难到爆炸TT我本来还想刚一道紫题搞完这个之后就佛了不做了TT 不扯淡了太太太浪费时间辣 好那直接港 首先我想到的就觉得大概是和那个奶牛玉米田的没有太大区别改一改就能ac! 然后我就先照着玉米田做完,发现过不了样例 于是改,改了半小时,好像差不多了,因为要存储放了几个国王巴拉巴拉的 还是没过样例,输出下过程,发现是上一种状态有很…
题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 输入 只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N) 输出 方案数. 样例输入 3 2 样例输出 16     n<=9,显然是状压dp,定义状态f[i][j][k]表示枚举到第i行,状态为j,前i行总共放了k个国王的方案数.搜索出一行符合的所有状态,枚举当前行和上一行的状态,…
题目传送门 题目大意:有n*n个格子,你需要放置k个国王使得它们无法互相攻击,每个国王的攻击范围为上下左走,左上右上左下右下,共8个格子,求最多的方法数 看到题目,是不是一下子就想到了玉米田那道题,如果不会的话可以去我另外一篇博客里面看看,里面有玉米田详细解答方案. 好,回到这道题.首先,看到数据范围,很自然的想到状压dp.题目要求我们已经放了国王格子的上下左右以及左上右上左下右下都不能放国王,那么我们就可以通过上一行的状态来更新这一行的状态,即dp[i][state]表示到第i行状态为stat…
题目链接 Solution 状压 \(dp\) . \(f[i][j][k]\) 代表前 \(i\) 列中 , 已经安置 \(j\) 位国王,且最后一位状态为 \(k\) . 然后就可以很轻松的转移了... 记忆化搜索还是不够啊... 只能会正向 \(dp\) . Code #include<bits/stdc++.h> #define ll long long using namespace std; ll f[10][101][1100],n,K; ll js[1100],sum,ans;…
题目大意 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子.( 1 <=N <=9, 0 <= K <= N * N) 题解 这跟"炮兵阵地"很是相似.定义一行的状态\(S\)为是否安放国王的01集合.先预处理出一行中两两国王无法攻击的所有状态(以后简称合理状态),以及这些状态中1的个数\(g(S)\).定义\(f(r,S,k)\)为当第\(r\)行的状态为\(S…
题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 注:数据有加强(2018/4/25) 输入输出格式 输入格式: 只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N) 输出格式: 所得的方案数 输入输出样例 输入样例#1: 复制 3 2 输出样例#1: 复制 16 思路: 这题一看n<=9,二话不说就上状压DP. f[i][j][k…
P1896 [SCOI2005]互不侵犯 状压DP入门题 状压DP一般需要与处理状态是否合法,节省时间 设定状态dp[i][j][k]表示第i行第j个状态选择国王数为k的方案数 $dp[i][j][num[j]+p]+=dp[i-1][k][p]$ 转移方程如上,表示第i行第j个状态国王数量为$num[j]+p$由上一行第k个状态的p个国王转移而来 状压DP的一般套路不就是将数的二进制表示成状态,如1010(10)10这个数就表示第一个位置放,第二个不放,以此类推 预处理:判断这一行的国王是否冲…
洛谷 P1896 [SCOI2005]互不侵犯 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 注:数据有加强(2018/4/25) 输入输出格式 输入格式: 只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N) 输出格式: 所得的方案数 输入输出样例 输入样例:  3 2 输出样例:  16题解:听大佬们说是状压dp,但很巧的是!我不…
P1896 [SCOI2005]互不侵犯King 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 输入输出格式 输入格式: 只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N) 输出格式: 所得的方案数 输入输出样例 输入样例#1: 复制 3 2 输出样例#1: 复制 16 #include<iostream> #inclu…
洛谷P1896:https://www.luogu.org/problemnew/show/P1896 前言 这是一道状压DP的经典题 原来已经做过了 但是快要NOIP 复习一波 关于一些位运算的知识点参考: https://blog.csdn.net/fox64194167/article/details/20692645 思路 看数据识算法系列 我们用f[i][j][k]来表示第i行为状态j 并且前i行已经放了k个国王 对于状态我们可以先预处理出来 因为每个格子有放和不放两种选择 那么我们可…