蓝桥杯2015年第六届真题-机器人塔

2023-10-27

题目

题目链接

题解

DFS+二进制枚举。


经典dfs之一。

好像比较经典的那个同型dfs题叫“符号三角形”?


可以看出上面一行的安排方式均由下面一行的安排方式决定,因此我们只要定好最后一行,那么上面的安排方式均可以由下行推出,且最后一行固定则整个三角形安排方式唯一。

我们用 0 0 0表示 A A A 1 1 1表示 B B B,这是由 A A A B B B出现的条件导致的,当两个字母一致时可以放 A A A,当两个字母不一样时放 B B B,这与异或运算不谋而合,因此 0 0 0表示 A A A 1 1 1表示 B B B时有,A^A = B^B = AB^A = A^B = B
我们二进制枚举最后一行的状态,再通过dfs得到上面三角形的安排方式,若能到达第一行且 A A A B B B的个数满足输入,则说明找到一种方案,方案数+1;
dfs中我们还可以适当剪枝以降低时间复杂度。当已经安排好的几行的 B B B的总数已经超过了输入的要求,则可以直接返回,无需继续以此状态深搜下去了;又或者,当已经安排好的几行的 B B B的总数过少,少到什么程度呢?少到即使上面未被搜索到的小三角形全填 B B B也无法达到输入的要求,则也可以直接返回无需深搜。

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;

int a, b, n, ans, arr[N][N]; // a[i][j]表示第i行第j个是A还是B,0表示A,1表示B。AB是由哪个数字表示主要是由二者出现的条件决定。 

void dfs(int row, int sumb) {
	
	if(row == 1) {
		if(sumb == b) ans ++; 
		return ;
	}
	
	for(int i = 1;i < row;i ++) arr[row-1][i] = arr[row][i] ^ arr[row][i+1], sumb += arr[row-1][i];
	
	if(sumb > b || (row-2)*(row-1)/2 + sumb < b) return ; // 剪枝,若B的个数已经大于输入时给定的数了或者上面未被搜索过的三角形内全部设置为B,再加上现在已经统计的B的个数仍小于给定的数,则剪枝 
	
	dfs(row-1, sumb);
}

int main()
{
	cin>>a>>b;
	n = sqrt(a+b<<1); // 最后一行的个数 
	
	for(int i = 0;i < (1<<n);i ++) { // 枚举最后一行的全部状态 
		int x = i, cnt = 0, bb = 0;
		while(x) bb += (x&1), arr[n][++cnt] = (x&1), x >>= 1; // 初始化a[n][i] 
		dfs(n, bb); // A:0  B:1 // bb表示B最后一行中B的个数 
	}
	cout << ans;
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯2015年第六届真题-机器人塔 的相关文章

  • 2017年蓝桥杯B组C/C++省赛-K倍区间

    题目 题解 思维 暴力的话是会超时的 但也可以骗点分 采用差分数组暴力 讲一下AC思路 统计出来每个前缀和取模 k k k后结果的个数 比如 c n t
  • 蓝桥杯算法训练VIP-方格取数

    题目 题目链接 题解 动态规划 本题和这个题几乎是完全一样 那个博客写的巨清楚 所以这里不写了 代码 include
  • 第十一届蓝桥杯C/C++B组省赛-平面切分

    题目 题目链接 题解 计算几何 存在这么一个结论 向一个平面中加入一条直线 分两种情况 若新加入的直线不与平面中的任何一条直线重合 则向平面中加入该直线对平面部分数的贡献为 平面中已经存在的直线与该直线相交得到的不同的交点数 1 若新加入的
  • 蓝桥杯2015年第六届真题-奇怪的数列

    题目 题目链接 题解 实现题 太简单了 就是遍历字符串 拼接一下就可以了 代码 include
  • 2020年蓝桥杯国赛-答疑

    题目 题目链接 题解 贪心 有点像 排队打水 比较好想 而且我甚至都能证明 贪心思路 按照 s a e s a e s a e 从小到大排序即可 证明 首先 每个人的
  • 蓝桥杯算法提高VIP-棋盘多项式

    题目 题目链接 题解 DFS 整体思路 横向分块 如下 我们只需要按连通块的序号去深搜即可 对于每个连通块 我们可以选择其中的任何一个空格作为放 車 的位置 或者选择不在这个连通块中放 車 因此 我们的问题转化为在dfs中如何确定连通块 如
  • [蓝桥杯][2013年第四届真题]危险系数

    题目 题目链接 题解 DFS 蓝桥杯中 一般看到图不是BFS就是DFS 代码1对应第一种方法 我的方法 根据关键点的定义 删除这个点之后 无法实现从u到v 那么我们就枚举每个点作为删除点 判断删除这个点之后还能不能实现从u到v 若不能说明删
  • 1067 Sort with Swap(0, i) (25 分)

    题目 题目链接 题解 思维 DFS 比较难想的是问题转化的思路 规定a i 表示索引为i处的初始数为a i 我们引入边 由i指向a i 由a i 指向i也可以 将所有n个边都连上后 可能存在若干个环 也可能自己指向了自己 自环 我们思考几种
  • 蓝桥杯2019年第十届省赛真题-扫地机器人

    题目 题目链接 题解 二分 贪心 二分模板 看到这道题第一时间想到的就是二分和动规 仔细一看二分有戏 能check出来 所以决定用二分好好想想 主要是因为我动规太菜了 怕了 二分时间 准确的说我们二分的不是时间 而是覆盖范围 也就是枚举每个
  • 蓝桥杯2019年第十届真题-人物相关性分析

    题目 题目链接 题解 字符串 滑动区间 不想写题解了 bug没de出来 吃饭去了 代码 我的代码 不知道为什么一直就是91 有大佬帮忙看一下吗 include
  • DFS 显示n个数中选取i(0~n)个数的情况

    include
  • 蓝桥杯2015年第六届真题-广场舞

    说在前面 其他博客中的代码应该保证不了健壮性 我这个 应该 可以 题目 题目链接 题解 数学 计算几何 提示 这题默认好像是顺时针或逆时针输入坐标 也就是说先后输入的两个点一定是多边形的一条边 前置知识 PNPoly算法 何为PNPoly算
  • 2017年蓝桥杯B组C/C++省赛-分巧克力

    题目 题目链接 题解 二分 想到二分比实现二分要难点 可行解部分可以与不可行解部分完美地分隔开来 绿色部分是分成的巧克力比较小时都可以满足 而大于一定程度的时候就不可行了 所以可以将其抽象成小于可行 大于不可行的二分问题 在判断时 遍历全部
  • 蓝桥杯2020年第十一届省赛真题-子串分值

    题目 题目链接 题解 思维 考虑每个字符对最终答案的贡献 每个字符的贡献为其左侧连续与之不相同的字符个数 1乘以其右侧与之不相同的字符个数 1 样例 ababc 第一个字符a的贡献 0 1 1 1 2 a ab 第二个字符b的贡献 1 1
  • 蓝桥杯历届试题-小朋友排队

    题目 题目链接 题解 树状数组求逆序对 好早之前写过逆序对的三种求法 看明白了树状数组求逆序对的方法后本题就很轻松了 本题思路 高矮不满足要求的相邻两个小朋友要互换位置 且二者的不高兴程度都是增加 所以对于某个小朋友而言 其左侧的高个会与其
  • 2021蓝桥杯模拟赛-受伤的皇后

    题目 题目链接 题解 DFS 八皇后问题改编而已 加入判断左上三格内和右上三格内是否存在皇后 代码 include
  • 蓝桥杯2015年第六届真题-赢球票

    题目 题目链接 题解 暴力 模拟 枚举每次从哪个位置开始 也就是有n种情况要枚举 对于每一种情况 我们都模拟这个过程 更新最大值 取牌操作结束的条件是还未被取走的数中的最大值都小于报的数了 说明没有办法取走任何一张了 此时结束 注意答案要求
  • L2-016 愿天下有情人都是失散多年的兄妹 (25 分)

    题目 题目链接 题解 DFS 孩子向父母方向连边 将孩子视为根节点 首先判断输入两个人的性别 如果不同再分别以二者为起点进行dfs 前者五服之内的亲属都标记一下 以后者为起点dfs 如果遇到了标记的人 那么说明五服之内存在公共祖先 不可以结
  • 【限时免费】20天拿下华为OD笔试之【DFS/BFS】2023B-寻找最大价值的矿堆【欧弟算法】全网注释最详细分类最全的华为OD真题题解

    DFS BFS 2023B 寻找最大价值的矿堆 题目描述与示例 给你一个由 0 空地 1 银矿 2 金矿 组成的的地图 矿堆只能由上下左右相邻的金矿或银矿连接形成 超出地图范围可以认为是空地 假设银矿价值 1 金矿价值 2 请你找出地图中最
  • 蓝桥杯算法训练VIP-求先序排列

    题目 题目链接 题解 递归 首先要了解什么是先序遍历 中序遍历和后序遍历 大佬讲解树的遍历 一般同学们应该都知道如何遍历 这个题有点像模拟实现题 就是把你手算的过程实现一遍 整体思路 先从后序遍历中确定根 再去中序遍历中找到根的左右两侧的子

随机推荐

  • day2作业

    作业说明 请在下方提示位置 补充代码 完成 青春有你2 选手图片爬取 将爬取图片进行保存 保证代码正常运行 打印爬取的所有图片的绝对路径 以及爬取的图片总数 此部分已经给出代码 请在提交前 一定要保证有打印结果 如下图所示 深度学习一般过程
  • nvm包管理工具下载安装

    1 去github官网 输入nvm windows 点击第一个nvm项目 在右侧点击releases 选择箭头指向的安装包 2 下载很快 但是安装前 得先卸载本机的nodejs 并且为nvm的包创建一个英文文件夹 这里我在D盘创建了一个no
  • JAVA遇见HTML—JSP篇—Mac系统(一.JAVA WEB)

    1 什么是Web应用程序 Web应用程序是一种可以通过Web访问的应用程序 Web应用程序的最大好处是用户很容易访问应用程序 用户只需要有浏览器即可 不需要再安装其他软件 为什么要学习Web应用程序 我们说Web应用程序开发 是目前软件开发
  • CC00202.CloudKubernetes——

    一 NoSchedule静止调度 容器强制驱逐 为master01打一个污点 NoSchedule类型 静止调度 容器会被强制驱逐 为master01节点打入污点 NoExecute类型 root k8s master01 kubectl
  • vscode统计项目代码行数插件——vecode counter

    vscode统计项目代码行数插件 vscode counter vscode counter 安装插件 使用方式 插件缺点 仅针对go来说的 vscode counter 安装插件 按照途中的地方进行搜索就能找到该插件的入口 点击insta
  • 如何监控windows进程的句柄、内存和cpu(二)

    接下来 我们看如何获取进程的CPU使用率 CPU使用率 指进程在一段时间内消耗的CPU时间与该时间段长度的比值 windows本身并没有提供直接获取进程CPU使用率的函数 但我们可以根据进程的计时信息来间接计算出进程的瞬时CPU占用 1 记
  • 抖音广告如何起量,这四点不能忽视

    抖音广告如何起量 你要知道这几点 抖音是一个流行短视频平台 我们在其中经常能看见一些热门的精彩视频广告和经典案例广告 很精彩也很吸引人 可是你知道这些优质的视频广告是如何拍出来的吗 快来跟小编看看 1 背景音乐的选择 抖音抖音 音 很重要
  • 登录文件服务器 换用户,win7切换用户访问共享、切换用户账户访问共享、共享文件夹切换用户的方法...

    现在 很多单位都有文件服务器 通常会对局域网设置共享 并且为了方便访问 通常就会设置 记住访问密码 这样以后访问共享文件时就不需要每次都输入密码了 虽然方便了共享文件访问 但是 当用户想切换访问共享文件的用户时 就比较麻烦 具体如何操作呢
  • 如何防御Java中的SQL注入

    SQL注入是应用程序遭受的最常见的攻击类型之一 鉴于其常见性及潜在的破坏性 需要在了解原理的基础上探讨如何保护应用程序免受其害 什么是SQL注入 SQL注入 也称为SQLi 是指攻击者成功篡改Web应用输入 并在该应用上执行任意SQL查询
  • C、C++、C#、python、java编程—程序结构

    C资料 菜鸟教程 C语言中文网 C community C 资料 菜鸟教程 cplusplus C community C 资料 菜鸟教程 microsoftC 文档 python资料 菜鸟教程 python标准库 Java资料 菜鸟教程
  • SpringMVC 接口版本管理/IP访问控制/ANT打包发布到LINUX

    前言 最近懒了很多也忙了很多 好多东西没办法分享到blog 因为知识点比较杂 没有时间整理 写这篇文章主要原因是 因为遇到了同样的问题 但是网上没有很好的解决方案于是自己解决后 分享给大家 源码在csdn download 文章尾部可以下载
  • 文字识别方法全面整理

    来源 https zhuanlan zhihu com p 65707543 作者 白裳 本文来自知乎专栏 仅供学习参考使用 著作权归作者所有 如有侵权 请私信删除 文字识别也是目前CV的主要研究方向之一 本文主要总结目前文字识别方向相关内
  • ubuntu 18.04 server安装(详细安装教程)

    前期准备 准备一个创建一个空文件夹 目的用于装虚拟机 个人习惯 2 准备好ubuntu 18 04 iso 服务版本镜像文件 接下来开始安装叭 1 打开虚拟机VMware workstations 这里用的是16pro 点击 主页 创建新的
  • 因果推断——图的三种基本结构

    因果推断入门笔记 V Structure Chain链状 Fork叉状 Collider碰撞 1 Chain 链状结构 X gt Y gt Z X和Y相关 Y和Z相关 X和Z相关 但是 如果condition在Y上 则X和Z是统计独立的 这
  • 三相桥式全控整流电路matlab仿真实验,三相全控桥式整流电路仿真实验

    三相全控桥式整流电路仿真实验 7页 本资源提供全文预览 点击全文预览即可全文预览 如果喜欢文档就下载吧 查找使用更方便哦 19 90 积分 实验九 电力电子电路的仿真实验 三相全控桥式整流电路仿真实验 一 实验目的 1 掌握MATLAB仿真
  • 故事分享

    一 Java是兴趣所在 L同学坦言说自己喜欢python这门语言 觉得它很有魅力 他说自己对互联网感兴趣 平时接触很多 自己也有尝试自学 看了很多教学视频和资料 然后他更加确定了自己对python的喜欢 他还给自己设置了一个小目标 独自搭建
  • 域名绑定Github个人博客

    首先自吹一波 我个人的博客网址 我的个人博客 1 个人博客搭建 基础的建站工作以下一套视频足以KO 底部音乐栏可以研究一下帮助文档 帮助文档其实非常的重要 很多问题全都在最新版本的帮助文档里面 之前查了网上很多答案都不太对 最后研究了一下帮
  • 最详细的MySQL安装、卸载

    MySQL是想在最主流的关系型数据库 所以作为一名 伟大 的程序猿 你的电脑上是必须要有的 相比较而言安装MySQL数据库还是很简单的 类似于傻瓜式安装 卸载 相对麻烦一些 需要手动删除一些文件 当然要仔细一些 演示版本MySQL 5 7
  • uniapp组件库总结笔记

    uView ui uView 2 0 全面兼容 nvue 的 uni app 生态框架 uni app UI 框架 优点 整体样式风格不错 缺点 不支持vue3 可以使用社区维护的uview plus uview plus 3 0 全面兼容
  • 蓝桥杯2015年第六届真题-机器人塔

    题目 题目链接 题解 DFS 二进制枚举 经典dfs之一 好像比较经典的那个同型dfs题叫 符号三角形 可以看出上面一行的安排方式均由下面一行的安排方式决定 因此我们只要定好最后一行 那么上面的安排方式均可以由下行推出 且最后一行固定则整个