今日总结2024/5/27

今日学习了状态压缩DP,状态压缩DP分为棋盘型(基于连通性)和集合型

Acwing.1064 小国王

在 n×n的棋盘上放 k个国王,国王可攻击相邻的 8个格子,求使它们无法互相攻击的方案总数。

输入格式
共一行,包含两个整数 n和 k。

输出格式
共一行,表示方案总数,若不能够放置则输出0。

数据范围
1≤n≤10,
0≤k≤n^2

每一行的状态都由上一行来决定,因此要分别枚举上一行状态和下一行状态来判断是否能合法转移,再进行计算,因此要将能合法转移的状态进行预处理,(a&b)==0代表二者不能出现在同一列,a|b不能出现连续的1代表二者不能不能出现在相邻的列

#include <bits/stdc++.h>
using namespace std;
//把一堆方案归类成一类来划分集合
//int f[i][j][s] 前i行放完,放了j个棋子,最后一行状态为s(二进制)属性为count方案数
const int N=12,M=1<<10,K=110;
int n,m,cnt[M];
long long f[N][K][M];//要开longlong不然会爆int
vector<int> h[M];
vector<int> state;bool check(int u){for(int i=0;i<n;i++)if((u>>i&1)&&((u>>i+1)&1))return false;return true;
}int count(int u){int res=0;for(int i=0;i<n;i++)if(u>>i&1) res++;return res;
}int main(){cin>>n>>m;for(int i=0;i<1<<n;i++)if(check(i)){state.push_back(i);//将合法的一行状态放入cnt[i]=count(i);}for(int i=0;i<state.size();i++)for(int j=0;j<state.size();j++){int a=state[i],b=state[j];//处理好i-1到i的映射关系if((a&b)==0&&check(a|b))h[i].push_back(b);//一定要是下标映射,不同方案的十进制可能相等}f[0][0][0]=1;for(int i=1;i<=n+1;i++)for(int j=0;j<=m;j++)for(int k=0;k<state.size();k++){int a=state[k],c=cnt[a];for(auto b:h[k])if(j>=c)//一定要大于放的f[i][j][a]+=f[i-1][j-c][b];}cout<<f[n+1][m][0];//第n+1行的状态为0return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/17067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像处理知识积累

冲激响应 冲激响应是系统在单位冲激函数激励下引起的零状态响应&#xff0c;它与系统的传递函数互为傅里叶变换关系。在连续时间系统中&#xff0c;任一个信号可以分解为具有不同时延的冲激信号的叠加&#xff0c;因此冲激响应可以描述系统的基本特性。通过电路分析法求解…

【华为OD机试-C卷D卷-200分】篮球游戏(C++/Java/Python)

【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 幼儿园里有一个放倒的圆桶,它是一个线性结构,允许在桶的右边将篮球放入,可以在桶的左边和右边将篮球取出。 每个篮球有单独的编号,老师可以连续放入一个或多个…

三维大场景管理-3Dtiles规范

简介 &#xff1a; 这篇文章都是三年前写的了&#xff0c;一直在笔记库存中&#xff0c;今天把他放出来。主要是讲Cesium 的3Dtiles 格式&#xff0c;当然3Dtiles主要是解决场景管理大场景的LOD实现的问题&#xff0c;不管是剔除渲染性能优化之Culling 剔除或者 LOD 、3Dtiles…

【JAVA】JSONObject.fromObject(message)引发的JSONObject 详解

【JAVA】JSONObject.fromObject(message&#xff09;引发的JSONObject 详解 一、JsonObject 简介二、JsonObject 基本操作2.1 、创建 JSONObject2.2、访问和操作 JSONObject2.3 生成 JSON 字符串2.4、示例代码 三、JsonObject 常见库3.1、使用 org.json 库3.2、使用 net.sf.jso…

Java 8的Stream API的使用说明,轻松实现集合的各种转换

Java 8中的Stream API为函数式编程带来了极大的便利&#xff0c;使得处理集合数据变得更加高效和简洁。以下是关于Java 8 Stream API的使用说明&#xff0c;我会尽量按照清晰的结构进行分点表示和归纳&#xff1a; 一、Stream API的基本概念 Stream&#xff1a;Stream是Java 8…

Educational Codeforces Round 158 B. Chip and Ribbon (贪心)

有一条带子&#xff0c;分为 n 个单元格&#xff0c;从左到右编号为 1 至 n 。最初&#xff0c;每个单元格中都写入了一个整数 0 。 单细胞与芯片玩游戏。游戏由几个回合组成。在第一轮中&#xff0c;Monocarp 将芯片放入色带的 1 -st 单元中。除了第一轮之外&#xff0c;在每…

SSM基于微信小程序的校园表白墙的设计与实现-计算机毕业设计源码58219

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;校园表白墙微信小程序被用户普遍使用&#xff0c;为方便用…

Java面试八股之自旋是什么意思

Java中的自旋是什么意思 自旋是多线程编程中的一种同步机制&#xff0c;尤其在Java中与锁的实现密切相关。当一个线程尝试获取某个锁&#xff08;如内置锁或显式锁&#xff09;时&#xff0c;如果锁已被其他线程持有&#xff0c;通常的做法是将该线程置于阻塞状态&#xff0c;…

图形学概述

图形学应用 游戏 游戏的画面好坏如何鉴定呢&#xff1f; 看游戏画面是否够亮&#xff1a;渲染中全局光照的好坏 《只狼》 为什么卡通游戏画面看起来是卡通的呢&#xff1f; 《无主之地3》 这些都是图形学需要着手解决的问题 电影 电影《黑客帝国》的特效也是通过计算机…

软件测试面试题(九)

一&#xff1a;说说你对SQA的职责和工作活动的理解&#xff1f; 答&#xff1a;SQA就是独立于软件开发的项目组&#xff0c;通过软件开发过程的监控&#xff0c;来保证软件开发流程按照指定的CMM规程&#xff0c;对于不符合项目及时提出来的建议和改进方案&#xff0c;必要是可…

HTTPS加密过程

今天我们说https具体工作原理。 HTTPS概念 HTTPS是一种网络协议&#xff0c;传统的HTTP是明文传输&#xff0c;非常 不安全&#xff0c;所以HTTPS是基于HTTP基础上进行加密传输内容。 HTTPS使用加密传输方式 第一种是非对称加密&#xff0c;是前期建立连接时候使用的数据加密…

Unity 直线间隔放置物体

直线间隔放置物体 0. 新建一个空物体&#xff0c;挂上脚本ZYF_QuickPlaceObj 设置 间隔距离 和 预制体在Scene中拖动即可按间隔距离实例化物体物体的朝向始终朝向统一方向&#xff0c;并且可以在Scene中拖拽更改 传送门

QML-1- qml简介及项目创建

文章目录 1. QML 简介2. 项目创建3. 目录结构4. CMakeLists.txt 简单介绍5. 运行demo 1. QML 简介 根据官网介绍&#xff0c;qml 为qt一个模块&#xff0c;使用Qml语言开发应用程序和库提供了一个框架。它定义并实现了语言和引擎基础结构&#xff0c;并提供了一个API&#xff…

jQuery事件导读+其它方法

jQuery 事件导读一、事件注册二、事件处理1.内容2.例子&#xff0c;微博绑定事件3.off解绑事件4.自动触发事件 三、事件对象 其他方法一、拷贝对象二、多库共存三、插件 事件导读 一、事件注册 单个事件叫注册&#xff0c;多个事件叫处理 二、事件处理 1.内容 2.例子&#…

Pytorch中乘法函数torch.matmul() 的一种用法

主要记录下torch.matmul(A,B)的用法中的一种情况&#xff1a; 当A&#xff0c;B有一个是3维以上&#xff0c;另一个是3维或3维以上时&#xff0c;如果想要使用torch.matmul(A,B)&#xff0c;必须同时满足&#xff1a; 1.A和B的最后两个维度满足矩阵乘法的要求。例如A的维度是…

今日上新——FCP

今年2月&#xff0c;我们FCC-E产品全新上线了专有D区&#xff0c;专门满足用户对高性价比的稀缺大机型需求。 产品研发组的小伙伴们根本停不下来~ 才几个月&#xff0c;我们又又上新了&#xff01; 今天的新品是FCP&#xff08;fastone Compute Platform&#xff09;&#x…

VMware ESXi中安装Proxmox VE

0、巴拉巴拉 前几天某行业HW&#xff0c;闲暇的时候几个技术人员聊天&#xff0c;臭味相投的聊到自己玩的东西。有个玩家说家里用工作站安装Proxmox VE&#xff0c;然后在上面安装软路由、安装NAS。我以前一直想玩玩&#xff0c;没有付诸行动&#xff0c;所以也想弄个集中的方案…

分享目前堪称最好用的车机桌面app,支持画中画模式!

好用的车机桌面了&#xff0c;支持悬浮画中画&#xff01; 如果你想改变单调的车机桌面&#xff0c;那么这篇文章你不要错过了&#xff01;支持地图悬浮、画中画的车机桌面&#xff0c;不要错过&#xff01; 今天阿星给大家分享3款好用、好看的大屏桌面软件&#xff0c;重要的…

如何在Namecheap上购买域名

文章目录 如何在Namecheap上购买国外域名&#xff0c;话不多说直接上步骤↓1&#xff1a;注册Namecheap账号2&#xff1a;选购域名3&#xff1a;如何付款4&#xff1a;付款购买域名5&#xff1a;总结 如何在Namecheap上购买国外域名&#xff0c;话不多说直接上步骤↓ 原文链接…

学习双向链表带哨兵demo

定义 在计算机科学中&#xff0c;链表是数据元素的线性集合&#xff0c;其每个元素都指向下一个元素&#xff0c;元素存储上并不连续。 双向链表&#xff0c;每个元素知道其上一个元素和下一个元素。 以下为示例代码&#xff1a; package com.tfq.arithmetic.linkedlist;imp…