洛谷-1896 [SCOI2005]互不侵犯

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

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

输入输出样例
输入样例#1:
3 2

输出样例#1:
16

解释:状态压缩dp,dp[i][j][k]:第1-i行,且第i行状态为j,总共个数为k的方案数多少,然后直接计算就好了

#include<iostream>
using namespace std;
long long dp[12][(1<<9)+10][100];
int n=0,k=0;
bool check(long long x){
	int f=0;
	while(x){
		if((x&1)&&f) return 0;
		f=x&1;x>>=1;
	}
	return 1;
}
int num(long long x){
	int sum=0;
	while(x){
		if(x&1) sum++;
		x>>=1;
	}
	return sum;
}
bool judge(int x,int y){
	if(x&y) return 0;
	if((x<<1)&y) return 0;
	if(x&(y<<1)) return 0;
	return 1;
}
int main(){
	ios::sync_with_stdio(false);
	cin>>n>>k;
	for(int i=0;i<(1<<n);i++) if(check(i)&&num(i)<=k) dp[1][i][num(i)]++;
	for(int i=2;i<=n;i++){
		for(int j=0;j<(1<<n);j++){
			if(!check(j)) continue;
			for(int u=0;u<(1<<n);u++){
				if(!check(u)) continue;
				if(!judge(u,j)) continue;
				for(int v=0;v<=k;v++){
					if(v+num(j)<=k) dp[i][j][v+num(j)]+=dp[i-1][u][v];	
				}
			}
		}
	}
	long long ret=0;
	for(int i=0;i<(1<<n);i++){
		if(check(i)) ret+=dp[n][i][k];
	}
	cout<<ret<<endl;
	return 0;
} 
洛谷 P1896 [SCOI2005] 互不侵犯 本文是状压 DP 入门经典题《互不侵犯的国王》(洛谷 P1896)的完整题解,针对 “在 N×N 棋盘放 K 个互不攻击的国王” 问题,给出了清晰解法。文章先讲解用二进制表示单行状态的核心思想,再通过预处理筛选合法状态、位运算快速判断行内与行间冲突,定义dp[i][j][s]为处理到第 i 行、放 j 个国王、状态为 s 的方案数,采用背包式转移累加方案。文中附带完整可运行代码,解析了优化细节与复杂度,帮助读者快速掌握状压 DP 的核心技巧,为后续进阶学习打下基础。 阅读详情

相关推荐

题解:洛谷 P1896 [SCOI2005] 互不侵犯

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共。#提高+# #状压DP#本文分享的必刷题目是从。只有一行,包含两个数。

团爸讲算法 477

互不侵犯(BZOJ1087) 题解

【题目描述】 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 【样例输入】 3 2 【样例输出】 16 【解题思路】 本题为SCOI2005的题,正解应该是状态压缩动态规划,把所有方案变为二进制存储,1为该位置摆放了国王,0为没有,因为一行...

296

深度学习优化算法解析(Momentum, RMSProp, Adam)

之前看了很多人介绍网络的优化器optimizer,无奈很多都把简单的东西讲的复杂化了,不容易让人懂,恰好之前看过吴恩达老师的最新的课程,这里结合老师讲的和个人想法写一下,方便别人同时也为自己以后回顾吧。 深度学习的优化算法主要有GD,SGD,Momentum,RMSProp和Adam算法吧,还有诸如Adagrad算法,不过大同小异,理解了前面几个,后面的也就引刃而解了。GD算法,SGD算法以及m

willduan的博客 12万+

互不侵犯(状态压缩dp)

题目描述 链接 在 N×NN×NN×N 的棋盘里面放 KKK 个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共 888 个格子。 输入格式 只有一行,包含两个数 N,KN,KN,K。 输出格式 所得的方案数。 Input 3 2 Output 16 数据范围与提示 1≤N≤9,0≤K≤N×N1≤N≤9,0≤K≤N×N1≤N≤9,0≤K≤N×N 思路 f[i][j][k]f[i][j][k]f[i][j][k] 表示在棋盘的前 iii

m0_51864047的博客 264

自监督预训练(三)wav2vec 2.0原理剖析

一、整体流程 二、feature encoder 理解Conv1d nn.Conv1d(in_channels=5, out_channels=20, kernel_size=3, stride=2) 假设输入input=(batch, in_channels, in_len) batch=1 in_channels=5,对应向量大小,比如word embedding in_len=10,对应word的个数 cnn内部kernel=(in_channels, kernel_size)=(5,3),相当

xmdxcsj的专栏 2万+

MPLAB修改工程名称方法

修改工程名称方法 如下图所示,工程名称为:Loar_V1.0_20210205 现将该工程名称修改为:Loar_V1.1_20210205 修改方法: ①找到工程文件路径,将工程名称修改为Loar_V1.1_20210205 注意:此时打开变成进行编译,会报错:Loar_V1.1_20210205.production.hex does not exist or is not an executable, ②找到工程下的 nbproject 文件夹 ③将nbproject文件夹下的文件全部打开,并且将

qq_26195179的博客 1759

互不侵犯(状压dp)

再来跟大家分享一道状压dp的问题,在这道问题中我们能学到一些处理限制条件的位运算的技巧。 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 注:数据有加强(2018/4/25) 输入格式 只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N) 输出格式 所得的方案数 输入输出样例 输入 #1 3 2 输出 #1

AC__dream的博客 390

避坑指南:微信小程序蓝牙广播在iOS上的那些‘坑’(附serviceUuids传值解决方案)

本文深入解析微信小程序蓝牙广播在iOS平台上的开发难点,特别是`serviceUuids`传值解决方案。通过对比iOS与安卓的蓝牙协议实现差异,提供实战编码策略和硬件端配合方案,帮助开发者有效规避兼容性问题,提升蓝牙外围设备开发效率。

weixin_30316097的博客 423

状压dp [SCOI2005]互不侵犯(洛谷 P1896)

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

不知所云的博客 436

别再手动写ZPL了!用C#和斑马官方SDK搞定ZT410 RFID打印机(附中文乱码解决方案)

本文详细介绍了如何使用C#和斑马官方SDK驱动ZT410 RFID打印机,解决中文乱码和RFID数据写入等常见问题。通过实战指南,开发者可以快速掌握从基础连接到高级调试的全流程,提升打印效率和可靠性。特别适用于物流、零售和资产管理领域的应用。

weixin_29267307的博客 224

【AI编程】2025年16款主流AI编程工具全维度测评及选型指南

2025年16款主流AI编程工具全维度测评及选型指南

funfan的博客 1万+

洛谷 P1896 [SCOI2005]互不侵犯

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

bai123456888888的博客 158

哨兵1号后向散射系数土壤水分反演

打开之前预处理之后的VH和VV极化的后向散射系数转存的tiff文件。

所有专家都曾始于新手 3292

洛谷 P1896 [SCOI2005]互不侵犯 (状压dp)

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

October の 补题记录 394

【大模型】Coze AI 智能体工作流从配置到使用实战详解

Coze 扣子智能体工作流从配置到使用实战详解

congge 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

洛谷 P1896 [SCOI2005]互不侵犯 递推/动归 (可状态压缩)

洛谷 P1896 [SCOI2005]互不侵犯 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 输入格式 只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N) 输出格式 所得的方案数 递推/动态规划 只考虑一行,一行合法状态必须...

Alfheim 250

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【题解】洛谷 P1896 [SCOI2005] 互不侵犯 [状压 dp]

状态数 dp、状态压缩、位运算

Isaac Regulus的博客 237

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

洛谷P1896 [SCOI2005] 互不侵犯

状态压缩动态规划是一个重要的算法,掌握状压dp可以帮助我们解决常规搜索和计算方案数等时间复杂度指数爆炸的问题。

我是小辣椒的博客 117

洛谷P1896 [SCOI2005] 互不侵犯 题解

本文提出了一种基于状态压缩动态规划的解法,用于解决N×N棋盘放置K个互不攻击的国王问题。针对n≤9的小规模棋盘,采用二进制状态表示每行棋子分布,预处理所有合法单行状态。通过位运算判断相邻行间的合法性,设计三维DP数组dp[i][s][j]表示处理到第i行、状态为s、已放置j个国王的方案数。转移时枚举当前行和上一行的合法状态组合,利用位运算快速验证条件。最终累加所有合法终态得到答案。时间复杂度与状态数相关,在n=9时仍高效可行。代码实现中需要注意使用long long类型防止溢出。

Little_Zyl的博客 706

洛谷 P1896 [SCOI2005]互不侵犯(状压dp)

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

菱形继承 860

洛谷 P1896 [SCOI2005] 互不侵犯 题解 状压dp

状压dp入门 洛谷P1896 互不侵犯 C++代码 附详细注释 动态规划

一只摸鱼的bbc 1295

洛谷P1896 [SCOI2005]互不侵犯

状压DP

a free man 666

洛谷 P1896 [SCOI2005]互不侵犯King

状压dp

sdfzrlt的博客 1116

洛谷P1896 [SCOI2005]互不侵犯King

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

weixin_30640291的博客 98

洛谷-P1896 [SCOI2005]互不侵犯

链接:https://www.luogu.org/problemnew/show/P1896 题意: 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 思路: 状压dp,dp[i][j][k]。表示。第i行,放j个国王,第j种状态的方法。 预处理第一行,dp。 枚举当前行和上一行的状态...

weixin_34372728的博客 103
上一篇: 洛谷-3377 【模板】左偏树(可并堆)
下一篇: 洛谷-2279 [HNOI2003]消防局的设立
mkopvec
博客等级 码龄8年 22粉丝 331原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值