【2024.10.22练习】机器人塔
题目描述

题目分析
由于数据小,直接考虑DFS搜索底层所有排列组合。
我的代码
需要注意:这个数据有点漏洞的是题干声明N+M<231,但实际上有个测试点是等于231的。
一开始在build_tower()函数中建完整个塔再判定是否合格,结果最大数据量下超时了。后面修改了函数,每添加一个机器人就判定一次是否合格,不合格直接退出函数,这样运行时间就在有效时长内了。因此对于时间复杂度在极限附近的程序,剪枝也是很有效的。
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int MAX_L=22;
int m; //A数量
int n; //B数量
int l; //层数:也是最底层的机器人数
bool bottom[MAX_L];//最底层机器人排列
bool tower[MAX_L][MAX_L];
//tower[i][j]表示第i层从左往右第j个机器人种类
int ans;
void build_tower(){//记录用于构筑的A,B数量int A=m;int B=n; //构建底层 for(int i=1;i<=l;i++){tower[l][i]=bottom[i]; if(!bottom[i]) A--;if(bottom[i]) B--;}//构建上层for(int i=l-1;i>0;i--){for(int j=1;j<=i;j++){tower[i][j]=tower[i+1][j]^tower[i+1][j+1]; //异或运算 if(!tower[i][j]) A--;if(tower[i][j]) B--;if(A<0||B<0) return;}}if(A==0&&B==0){ans++;//数量正确 }
}
void dfs(int a,int b,int x){//a,b为剩余A,B的数量 if(a<0||b<0||x>l) return;if(x==l){build_tower();return;}bottom[x+1]=0; dfs(a-1,b,x+1); //0代表Abottom[x+1]=1;dfs(a,b-1,x+1); //1代表B
}
int main()
{cin>>m>>n;for(int i=1;i<=21;i++){if(i*(i+1)/2==m+n){l=i;}}ans=0;dfs(m,n,0);cout<<ans;return 0;
}相关文章:
【2024.10.22练习】机器人塔
题目描述 题目分析 由于数据小,直接考虑DFS搜索底层所有排列组合。 我的代码 需要注意:这个数据有点漏洞的是题干声明NM<231,但实际上有个测试点是等于231的。 一开始在build_tower()函数中建完整个塔再判定是否…...
酒店预订订房小程序源码系统 多酒店入驻+打造类似美团的酒店模式 带完整的安装代码包以及搭建部署教程
系统概述 随着移动互联网的普及,小程序因其轻量级、无需下载安装、即用即走的特点,迅速成为各行业的标配。对于酒店预订行业而言,小程序不仅能够有效提升用户体验,还能降低运营成本,提高转化率。本源码系统正是基于这…...
springboot037基于SpringBoot的墙绘产品展示交易平台的设计与实现(论文+源码)_kaic
毕 业 设 计(论 文) 题目:墙绘产品展示交易平台设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本墙绘产品展示…...
YOLOv8实战人脸-口罩检测与识别【数据集+YOLOv8模型+源码+PyQt5界面】
本文采用YOLOv8作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv8以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对人脸-口罩数据集进行训练和优化,该数据集包含丰富的人脸-口罩图像样…...
《黑神话悟空》各章节boss顺序汇总
第一章BOSS顺序: 1、牯护院:犀牛精,位于苍狼岭娟,击败后能获得定身术。 2、广智:火刀狼, 位于观音禅院,击败后获得广智变身,记得敲钟。 3、蓝皮幽魂:蓝皮大头࿰…...
rust中cargo.toml详细介绍
1. cargo.toml介绍 Cargo.toml是 Rust 项目的配置文件,它使用 TOML(Tom’s Obvious, Minimal Language)格式。 1.1 基本结构 [package]:包含项目的基本信息。 name:项目名称。version:项目版本号。edition:Rust 版本,如 2018、2021 等。[package]name = "abc&q…...
jupyter notebook 笔记
nbclassic 经典版 新版的 jupyter notebook 太丑了。 最难受的是字体太小了。 我还是喜欢老版本的 jupyter notebook. 安装经典版: pip install nbclassic 启动经典版: jupyter server 或是 jupyter nbclassic 参考来源: https://github.com/jupyter/nbclassic jupyter note…...
Atlas800昇腾服务器(型号:3000)—CANN安装(二)
服务器配置如下: CPU/NPU:鲲鹏 CPU(ARM64)A300I pro推理卡 系统:Kylin V10 SP1【下载链接】【安装链接】 驱动与固件版本版本: Ascend-hdk-310p-npu-driver_23.0.1_linux-aarch64.run【下载链接】 Ascend-…...
考研鼓励小程序
考研冲刺倒计时,加入我们一起奋斗💥 考研倒计时提醒神器来啦! 距离考研越来越近,复习是否紧张又有些焦虑?不用担心!我特别制作了一个 考研倒计时提醒服务,每天在 7:00 和 23:59 准时为你发送倒…...
Wooden UI(木头UI纹理按钮边框 背景图标 带PNG素材)
资源包包含以下元素:按钮、图标、框架、复选框等,提供分层的 PSD 文件。 下载:Unity资源商店链接资源下载链接 效果图:...
WebRTC音频 03 - 实时通信框架
WebRTC音频01 - 设备管理 WebRTC音频 02 - Windows平台设备管理 WebRTC音频 03 - 实时通信框架(本文) WebRTC音频 04 - 关键类 WebRTC音频 05 - 音频采集编码 一、前言: 前面介绍了音频设备管理,并且以windows平台为例子,介绍了ADM相关的类…...
Maven陷阱揭秘:避开Java项目构建的10大常见误区
文章目录 引言基础知识核心概念示例演示实际应用深入与最佳实践常见问题解答结语学习资源互动环节 引言 Maven是Java项目中广泛使用的项目管理和构建自动化工具。它通过一个中央仓库和依赖管理系统,简化了项目的构建和依赖管理。理解Maven的依赖机制对于构建和维护…...
基础数据结构思路写法记录,便于回顾
重思路非代码。基础的思路搞懂了,变形题目顺着思考基本都能写出来! 二分查找 int binarySearch(vector<int> &nums, int target) {// write your code hereif (nums.empty()) {return -1;}int start 0;int end nums.size() - 1;while (star…...
基于AI的量化投资框架Qlib的Python依赖包pyqlib安装问题记录
版权声明:本文为博主原创文章,如需转载请贴上原博文链接:基于AI的量化投资框架Qlib的Python依赖包pyqlib安装问题记录-CSDN博客 前言:最近想使用Qlib来做量化交易的策略研究,但是第一步就卡在了安装pyqlib依赖包&#…...
《语音识别方案选择》
《语音识别方案选择》 一、引言二、语音识别技术概述(一)语音识别的基本原理(二)语音识别技术的发展历程(三)语音识别技术的分类1、基于声学模型的语音识别2、基于语言模型的语音识别3、端到端的语音识别 三…...
目标检测数据集图片及标签同步裁剪
目录 前言 具体方法 使用介绍 完整代码 前言 在目标检测任务中,模型的训练依赖于大量高质量的标注数据。然而,获取足够多的标注数据集往往代价高昂,并且某些情况下,数据集中的样本分布不均衡,这会导致模型的泛化能…...
【设计模式-简单工厂】
定义 简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,用于通过一个工厂类来创建某个产品类的实例,而不直接在客户端(调用方)中实例化对象。 这种模式的主要思想是将对象的创建逻辑集中在一个…...
多个版本的GCC(GNU编译器集合)可以同时安装并存
在Ubuntu系统中,多个版本的GCC(GNU编译器集合)可以同时安装并存。GCC是编译C、C以及其他编程语言程序的重要工具,不同的项目可能需要不同版本的GCC来确保兼容性。 为什么需要多个GCC版本 项目依赖:不同的软件项目可能…...
量子纠错--shor‘s 码
定理1 (量子纠错的条件) C是一组量子编码,P是映射到C上的投影算子。假设是一个算子元素描述的量子操作,那么基于量子编码C,存在一个能对抗描述的噪声的纠错操作R的充要条件是 对某个复元素厄米矩阵成立。 将算子元素称为导致的错误。如果这样…...
机器学习2
一、模型评估方法 1.1 K折交叉验证法(K-Fold Cross Validation) 1.1.1 定义 K折交叉验证法是一种用于评估模型性能的技术。它将数据集分为K个相等的子集,模型会轮流使用一个子集作为测试集,其余K-1个子集作为训练集。这个过程会…...
省市区县四级联动数据获取指南:基于高德API的geoJSON数据自动更新方案
省市区县四级联动数据获取指南:基于高德API的geoJSON数据自动更新方案 行政区划数据是地理信息系统和数据分析领域的基础要素之一。无论是制作可视化地图、进行区域统计分析,还是开发基于位置的服务应用,准确、实时的行政区划数据都至关重要。…...
AceCommon:Arduino嵌入式零堆分配轻量C++工具库
1. AceCommon 库概述:面向嵌入式 Arduino 的轻量级底层工具集AceCommon 是一个专为资源受限的微控制器平台(尤其是 Arduino 生态)设计的零依赖、低开销 C 工具库。其核心设计哲学是“小而精、无侵入、可复用”。与常见的功能臃肿、依赖繁杂的…...
用Python+Control库实现倒立摆LQR控制:从建模到仿真全流程
用PythonControl库实现倒立摆LQR控制:从建模到仿真全流程 倒立摆问题一直是控制理论中的经典案例,它不仅能帮助我们理解线性二次调节器(LQR)的核心思想,还能锻炼我们解决实际工程问题的能力。本文将带你从零开始&#…...
2026年03月27日全球AI前沿动态
一句话总结AI领域覆盖通用/垂直大模型、智能体应用、物理机器人、硬件算力、企业战略、产品更新、投融资、行业观点、民生教育、研究资源全维度,国产技术密集突破、智能体全面落地、硬件自研提速、安全风险频发、老年AI教育落地,行业向实用化、国产化、安…...
低查重不是梦!AI写教材工具,让教材生成轻松又高效!
借助AI工具,开启教材创作新纪元 谁没有在编写教材框架时陷入困境呢?面对一张空白的文档,足足坐在那里半小时却不知道该从哪里开始——究竟是先介绍概念,还是先提供案例?章节划分该遵循逻辑还是按课时来的?…...
AutoGen多智能体框架实战指南:从环境搭建到业务落地
AutoGen多智能体框架实战指南:从环境搭建到业务落地 【免费下载链接】autogen 启用下一代大型语言模型应用 项目地址: https://gitcode.com/GitHub_Trending/au/autogen 在人工智能快速发展的今天,构建能够模拟人类协作模式的智能系统已成为技术突…...
新手友好:在快马平台用mc、jc相关案例轻松上手前端开发
作为一个刚接触前端开发的新手,我最近在InsCode(快马)平台尝试做了一个特别适合练手的小工具——代码行数统计器。这个项目用最基础的HTML、CSS和JavaScript实现,但包含了前端开发的几个核心概念,特别适合想通过实际案例学习的朋友。 项目功能…...
5分钟搞定局域网IP扫描:OpUtils保姆级配置教程(附常见问题排查)
5分钟搞定局域网IP扫描:OpUtils保姆级配置教程(附常见问题排查) 办公室里突然断网了?打印机死活连不上?新同事的电脑无法接入内网?作为中小企业IT运维人员,这些场景你一定不陌生。别急着打电话求…...
PT-Plugin-Plus:PT站点下载助手安装与使用指南
PT-Plugin-Plus:PT站点下载助手安装与使用指南 【免费下载链接】PT-Plugin-Plus PT 助手 Plus,为 Microsoft Edge、Google Chrome、Firefox 浏览器插件(Web Extensions),主要用于辅助下载 PT 站的种子。 项目地址: h…...
实战构建开放数据可视化平台,从采集到展示的全流程开发指南
今天想和大家分享一个完整的开放数据可视化项目实战经验。这个项目从数据采集到最终展示,涵盖了全流程开发的关键环节,特别适合想积累真实项目经验的朋友参考。 项目背景与目标 开放数据正在成为数字化转型的重要资源,但很多开发者面对海量…...
