【洛谷P1896】互不侵犯

时间:2021-09-09 09:25:51

题目大意:给定 N*N 的棋盘,一共放 K 个国王,一共有多少种方法。

题解:

  • i&i<<1 判断是否每个 1 的位置之间都有 0。
  • i&j<<1 判断 i 中为 1 的位置与 j 中为 1 的位置是否存在右下角的影响。

    相比于铺砖问题,此题仅仅多了一个必须要放 k 个国王,那在此基础上加一个维度,表示放了多少个国王即可。

代码如下

#include <bits/stdc++.h>
using namespace std; int n,m,cnt[1<<9];
long long f[10][1<<9][100];
bool ins[1<<9]; void read_and_parse(){
scanf("%d%d",&n,&m);
for(int i=0;i<1<<n;i++)if(!(i&i<<1)){
ins[i]=1;
int res=0;
for(int j=0;j<n;j++)if(i>>j&1)++res;
cnt[i]=res;
}
} void solve(){
f[0][0][0]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<1<<n;j++)if(ins[j])
for(int k=0;k<1<<n;k++)if(ins[k]&&(j&k)==0&&(j&k<<1)==0&&(j&k>>1)==0)
for(int w=m;w>=cnt[j];w--)
f[i][j][w]+=f[i-1][k][w-cnt[j]];
long long ans=0;
for(int i=0;i<1<<n;i++)if(ins[i])ans+=f[n][i][m];
printf("%lld\n",ans);
} int main(){
read_and_parse();
solve();
return 0;
}

【洛谷P1896】互不侵犯的更多相关文章

  1. 洛谷 P1896 互不侵犯King

    P1896 [SCOI2005]互不侵犯King 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共 ...

  2. 状压DP概念 及例题(洛谷 P1896 互不侵犯)

    状压DP 就是状态压缩DP.所谓状态压缩,就是将一些复杂的状态压缩起来,一般来说是压缩为一个二进制数,用01来表示某一元素的状态. 比如一排灯泡(5个) 我们可以用一串二进制01串来表示他们的状态 1 ...

  3. 洛谷P1896 互不侵犯

    又是一道状压DP求方案数的题... 多了一个放k个的限制,于是我们把数组多开一维. f[i][j][k]表示前i行放了j个,第i行状态为k的方案数. 然后老套路DFS转移,这次要多记录一个cnt表示上 ...

  4. 洛谷 P1896 &lbrack;SCOI2005&rsqb;互不侵犯

    洛谷 P1896 [SCOI2005]互不侵犯 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8 ...

  5. 【题解】洛谷P1896 &lbrack;SCOI2005&rsqb; 互不侵犯(状压DP)

    洛谷P1896:https://www.luogu.org/problemnew/show/P1896 前言 这是一道状压DP的经典题 原来已经做过了 但是快要NOIP 复习一波 关于一些位运算的知识 ...

  6. 洛谷P1896&vert;&vert;bzoj1087 &lbrack;SCOI2005&rsqb;互不侵犯

    bzoj1087 洛谷P1896 想了很久,太久没做状压都已经不会了... 状压每一行就好了 #include<cstdio> #include<algorithm> #inc ...

  7. 状压DP【洛谷P1896】 &lbrack;SCOI2005&rsqb;互不侵犯

    P1896 [SCOI2005]互不侵犯 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子 ...

  8. 洛谷P1896 &lbrack;SCOI2005&rsqb;互不侵犯King

    P1896 [SCOI2005]互不侵犯King 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共 ...

  9. 洛谷——P1896 &lbrack;SCOI2005&rsqb;互不侵犯

    P1896 [SCOI2005]互不侵犯 状压DP入门题 状压DP一般需要与处理状态是否合法,节省时间 设定状态dp[i][j][k]表示第i行第j个状态选择国王数为k的方案数 $dp[i][j][n ...

  10. BZOJ1087&equals;Codevs2451&equals;洛谷P1896&amp&semi;P2326互不侵犯

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2885  Solved: 1693[Submit][ ...

随机推荐

  1. ajax返回数据类型为JSON数据的处理

    JSON数据处理: 1.编码格式必须为utf8 2.echo json_encode($db->GuanQuery($sql));   返回的是关联数组.json_encode返回的是json数 ...

  2. Chrome的Crash Report服务

    <本文转自:http://www.cppblog.com/woaidongmao/archive/2009/10/22/99211.aspx> 本文翻译自debugInfo网站上一篇文章g ...

  3. 使用css3实现文章新闻列表排行榜(数字)

    列举几个简单的文章排行榜数字效果 一:使用list-style来显示数字.圆点.字母或者图片 <style> li{width:300px; border-bottom: 1px dott ...

  4. java 基本类型和包装类的比较

    public class BoxingTest { @Test public void test1(){ String a = new String("1"); String b ...

  5. &lbrack;代码审计&rsqb;青云客Cms前台有条件注入至getshell,后台xss至getshell、至弹你一脸计算器

    之前写了一篇关于青云客cms的文章,发在了t00ls,就不copy过来了. 给个链接,好记录一下. https://www.t00ls.net/thread-43093-1-1.html

  6. FutureTask理解

    一.概述 FutureTask包装器是一种非常便利的机制,同时实现了Future和Runnable接口. 类图如下: FutureTask是一种可以取消的异步的计算任务.它的计算是通过Callable ...

  7. WebApi零碎总结

    1.如果Content-Type是application/json,而POST和PUT的参数是[FromBody] string value,那么如果curl -d的值是'{"Name&qu ...

  8. RS:关于协同过滤,矩阵分解,LFM隐语义模型三者的区别

    项亮老师在其所著的<推荐系统实战>中写道: 第2章 利用用户行为数据 2.2.2 用户活跃度和物品流行度的关系 [仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法.学术界对协同过滤算 ...

  9. 自动化部署必备技能—定制化RPM包&lbrack;转载&rsqb;

    回顾下安装软件的三种方式: 1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件,优点是全自动化 ...

  10. jquery&period;inputmask 输入框input输入内容格式限制插件

    jQuery Input Mask plugin http://robinherbots.github.io/jquery.inputmask README.md jquery.inputmask C ...