【bzoj 1087】[SCOI2005]互不侵犯King(状压dp)
1087: [SCOI2005]互不侵犯King
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 2641 Solved: 1558
[Submit][Status][Discuss]Description
在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上
左下右上右下八个方向上附近的各一个格子,共8个格子。
Input
只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N)
Output
方案数。
Sample Input
3 2
Sample Output
16
HINT
Source
【题解】【状压dp】
【f[i][j][k]表示前i行放j个的第k种方案】
【这道题要先预处理出可能的状态,再进行dp】
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
ll d[1024],f[10][100][1024],n,k,tot,ans;
bool p[1024],b[1024][1024];
int main()
{
int i,j,l,t;
scanf("%lld%lld",&n,&k);
tot=(1<<n)-1;
for(i=0;i<=tot;++i)
if(!((i>>1)&i))
{ for(j=i;j>0;j>>=1)
d[i]+=(j&1);
p[i]=true;
}
for(i=0;i<=tot;++i)
if(p[i])
for(j=0;j<=tot;++j)
if(p[j])
if((!(i&j))&&(!((i>>1)&j))&&(!((j>>1)&i)))
b[i][j]=true;
for(i=0;i<=tot;++i) f[1][d[i]][i]=1;
for(t=2;t<=n;++t)
for(i=0;i<=tot;++i)
if(p[i])
for(j=0;j<=tot;++j)
if(p[j])
if(b[i][j])
for(l=d[i];l+d[j]<=k;++l)
f[t][l+d[j]][j]+=f[t-1][l][i];
for(i=0;i<=tot;++i)
ans+=f[n][k][i];
printf("%lld\n",ans);
return 0;
}
转载于:https://www.cnblogs.com/lris-searching/p/9403156.html
【bzoj 1087】[SCOI2005]互不侵犯King(状压dp)相关推荐
- BZOJ 1087 SCOI2005 互不侵犯King 状压DP
题目大意:给定n*n的国际象棋棋盘.在上面放k个国王,要求国王之间互不攻击.求方案数 n<=⑨ 状压DP.将每一行的方案二进制压成一维,令f[i][j][k]为第i行用去j个国王状态为k的方案数 ...
- BZOJ 1087 [SCOI2005]互不侵犯King ——状压DP
[题目分析] 沉迷水题,吃枣药丸. [代码] #include <cstdio> #include <cstring> #include <iostream> #i ...
- BZOJ 1087: [SCOI2005]互不侵犯King
二次联通门 : BZOJ 1087: [SCOI2005]互不侵犯King /*BZOJ 1087: [SCOI2005]互不侵犯King状压dp将每一行棋子的存在状态压成一个整数f[i][j][k] ...
- 【洛谷 P1896】[SCOI2005]互不侵犯(状压dp)
题目链接 题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 这是道状压\(DP\)好题啊.. ...
- 洛谷P1896 互不侵犯【状压DP】
题目链接:P1896 互不侵犯 分析:普通的状压DP再多加一维记个数,然后找到能转移到当前的状态更新答案: #include<bits/stdc++.h> using namespace ...
- 【BZOJ1087】【codevs2451】互不侵犯,状压DP
传送门1 传送门2 写在前面:第一次写状压DP,感觉还好,至少比数论好些,还有就是让我膜一发位运算-- 思路:一看数据范围n<=9而且是省选,就知道这个题九成是状态压缩,题目限制条件与上一行的摆 ...
- [BZOJ1087][SCOI2005]互不侵犯King
Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行, ...
- BZOJ 2734 [HNOI2012]集合选数 (状压DP、时间复杂度分析)
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2734 题解 嗯早就想写的题,昨天因为某些不可告人的原因(大雾)把这题写了,今天再来写题解 ...
- bzoj 1072: [SCOI2007]排列perm(状压dp)
1072: [SCOI2007]排列perm Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2272 Solved: 1432 [Submit][ ...
- BZOJ 4416: [Shoi2013]阶乘字符串【状压DP
--不那么裸的状压dp-- 当字符集大于21的时候直接输出不满足--原因啊----大了就跑不过了 --大概就是不能得到嘛[大佬们并没有讨论出结果在下只是听的题解[x 用f[i][j]表示第i个字符前 ...
最新文章
- php上下翻页,一个很不错的PHP翻页类
- 共享文件夹Access-Based Enumeration特性一览
- ImportError: cannot import name ‘python_2_unicode_compatible‘
- 修改C盘里windows\system32\etc里面的hosts文件并保存
- 编程语言大比拼——谁的效率高
- 获取页面所有属性并生成html6,JavaScript基础练习题(三)
- mfc 制作不同的文档模板mdi不同的子窗体_鹤岗水利渡槽钢模板设计-哈尔滨同顺钢模板...
- SQL:pgsql查询一段时间内每个小时的首条数据,为空返回0
- php 表单 sql,PHP表单发布到SQL后没有任何操作
- sharp.js中文文档
- matlab 8fsk,MFSK蒙特卡洛仿真与理论误码率的对比
- linux应用开发 — 控制LED设备
- 通过Excel对各个商品的销售分析
- 电脑电池,笔记本电脑
- c++“不允许使用不完整的类型“
- c语言一行黑白相间的瓷砖,磁砖样式——第八届蓝桥杯C语言B组(国赛)第二题...
- 【数据库学习】非关系数据库(NoSQL:“non-relational”)
- Python网络爬虫与信息提取(17)—— 题库爬取与整理+下载答案
- UR机器人通信接口总结
- java实现图片平铺倾斜水印效果--转载
热门文章
- 软件工程 第四章 概要设计
- 【两种方式】用python和ENVI画出高光谱遥感影像的3D立体图
- 卷积神经网络参数说明
- 支持向量机在风控竞赛数据集上的应用
- 如何使用更多数据更新神经网络模型
- try与raise用法
- mysql的管理与优化_MySQL管理与优化(9)_MySQL
- fv-15php1c 安装图,SQLite - C/C++接口 API(一)
- java c 网络_编程中Java与C/C++,Internet区别
- 支持向量机_支持向量机(SVM)说明及示例