题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上
左下右上右下八个方向上附近的各一个格子,共8个格子。n<=9

思路:状压dp,dp[i][j][k]为前i行放了j个,第i行状态为k

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<stack>
#include<queue>
#include<deque>
#include<set>
#include<vector>
#include<map>
#include<functional>#define fst first
#define sc second
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))
#define lson l,mid,root<<1
#define rson mid+1,r,root<<1|1
#define lc root<<1
#define rc root<<1|1
#define lowbit(x) ((x)&(-x)) using namespace std;typedef double db;
typedef long double ldb;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> PI;
typedef pair<ll,ll> PLL;const db eps = 1e-6;
const int mod = 998244353;
const int maxn = 2e6+100;
const int maxm = 2e6+100;
const int inf = 0x3f3f3f3f;
const db pi = acos(-1.0);ll dp[20][200][2000];
int n, k;
int num[2000];
int ys[2000];int main(){mem(dp, 0);mem(ys, 0);scanf("%d %d", &n, &k);for(int i = 0; i < (1<<n); i++){int p = i;int cnt = 0;while(p){if(p&1)cnt++;p>>=1;}num[i]=cnt;}for(int i = 0; i < (1<<n); i++){if(((i<<1)&i) ||((i>>1)&i)){continue;}ys[i] = 1;dp[1][num[i]][i]=1;}for(int i = 2; i <= n; i++){for(int j = 0; j <= k; j++){for(int p = 0; p < (1<<n); p++){//nowif(!ys[p])continue;if(num[p]>j)continue;for(int x = 0; x < (1<<n); x++){//last status from i-1if(!ys[x])continue;if((p&x)||((p<<1)&x)||(p>>1)&x)continue;dp[i][j][p] += dp[i-1][j-num[p]][x];}}}}ll ans = 0;for(int i = 0; i < (1<<n); i++){ans += dp[n][k][i];}printf("%lld", ans);return 0;}

转载于:https://www.cnblogs.com/wrjlinkkkkkk/p/9832606.html

BZOJ 1087 [SCOI2005]互不侵犯King(状压DP)相关推荐

  1. BZOJ 1087 SCOI2005 互不侵犯King 状压DP

    题目大意:给定n*n的国际象棋棋盘.在上面放k个国王,要求国王之间互不攻击.求方案数 n<=⑨ 状压DP.将每一行的方案二进制压成一维,令f[i][j][k]为第i行用去j个国王状态为k的方案数 ...

  2. BZOJ 1087 [SCOI2005]互不侵犯King ——状压DP

    [题目分析] 沉迷水题,吃枣药丸. [代码] #include <cstdio> #include <cstring> #include <iostream> #i ...

  3. BZOJ 1087: [SCOI2005]互不侵犯King

    二次联通门 : BZOJ 1087: [SCOI2005]互不侵犯King /*BZOJ 1087: [SCOI2005]互不侵犯King状压dp将每一行棋子的存在状态压成一个整数f[i][j][k] ...

  4. 【洛谷 P1896】[SCOI2005]互不侵犯(状压dp)

    题目链接 题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 这是道状压\(DP\)好题啊.. ...

  5. 洛谷P1896 互不侵犯【状压DP】

    题目链接:P1896 互不侵犯 分析:普通的状压DP再多加一维记个数,然后找到能转移到当前的状态更新答案: #include<bits/stdc++.h> using namespace ...

  6. 【BZOJ1087】【codevs2451】互不侵犯,状压DP

    传送门1 传送门2 写在前面:第一次写状压DP,感觉还好,至少比数论好些,还有就是让我膜一发位运算-- 思路:一看数据范围n<=9而且是省选,就知道这个题九成是状态压缩,题目限制条件与上一行的摆 ...

  7. [BZOJ1087][SCOI2005]互不侵犯King

    Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行, ...

  8. BZOJ 2734 [HNOI2012]集合选数 (状压DP、时间复杂度分析)

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2734 题解 嗯早就想写的题,昨天因为某些不可告人的原因(大雾)把这题写了,今天再来写题解 ...

  9. bzoj 1072: [SCOI2007]排列perm(状压dp)

    1072: [SCOI2007]排列perm Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 2272  Solved: 1432 [Submit][ ...

  10. BZOJ 4416: [Shoi2013]阶乘字符串【状压DP

    --不那么裸的状压dp-- 当字符集大于21的时候直接输出不满足--原因啊----大了就跑不过了  --大概就是不能得到嘛[大佬们并没有讨论出结果在下只是听的题解[x 用f[i][j]表示第i个字符前 ...

最新文章

  1. Php中如何记录本报时间,详细讲解PHP的日期时间函数date()
  2. 全套CRC校验的算法
  3. 基于ajax的数据验证
  4. python编译成class_django为Form生成的label标签添加class方式
  5. 学python买什么书-书单狗 篇一:小白学Python,到底要看多少书?
  6. 线程同步机制的区别与比较及进程通信方法
  7. 如果同时需要两张表,但其中一个表中没有另一个表中的字段,该如何正确使用
  8. JAVA笔试题常见坑_java笔试常见的选择题(坑你没商量)
  9. asp.net mysql 论坛源码_最新asp.net微信商城快速开发框架Magicodes.Shop微商城开发框架源码企业商业版源代码...
  10. 两个表格内容怎么合并
  11. 《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第1章 OpenHarmony与Pegasus物联网开发套件简介
  12. 圆弧的函数c语言,VC++中Arc函数画圆弧
  13. Linux 工具 | 第1篇:高级流控-TC+HTB+IFB+内核模块
  14. matlab拉依达法,基于拉依达准则的奇异数据滤波法.ppt
  15. 错误 '800a03ea'
  16. VBA 连接Oracle 数据库
  17. 顶级计算机语言学大会COLING 2016,亮点迭出一一呈现
  18. SQLAlchemy 增删改查和基础操作
  19. 深度对比 Python 与 Java 的区别(一)
  20. 发那科系统整套梯形图调试维修 FANUC全套PMC设计 发那科标

热门文章

  1. 两年经验拿到蚂蚁/头条 Offer(面经分享)
  2. 你一定要知道,关于https的五大误区
  3. 开源巨献:腾讯最热门30款开源项目
  4. 微信红包订单存储架构变迁的最佳实践
  5. Linux之父:我就是觉得苹果太没意思!
  6. 程序员如何保护自己?
  7. java真实面试题(2)
  8. 每天一道Rust-LeetCode(2019-06-02)
  9. [TJOI2015]弦论(后缀数组or后缀自动机)
  10. Mac Xdebug安装时遇到了Zend Engine API 不一致的问题