蓝桥杯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年第六届真题-机器人塔 的相关文章

  • [蓝桥杯][2013年第四届真题]幸运数

    题目 题目链接 题解 两种方法 DFS 模拟 先讲大佬的DFS 再讲我的模拟 分别对应代码1和代码2 代码3是根据大佬代码改进的我的模拟 推荐代码1和代码3 从幸运数字3开始每次都将 通过幸运数字更新过的数组中当前幸运数字的下一个数字 作为
  • 蓝桥杯2015年第六届真题-机器人塔

    题目 题目链接 题解 DFS 二进制枚举 经典dfs之一 好像比较经典的那个同型dfs题叫 符号三角形 可以看出上面一行的安排方式均由下面一行的安排方式决定 因此我们只要定好最后一行 那么上面的安排方式均可以由下行推出 且最后一行固定则整个
  • 2017年蓝桥杯B组C/C++省赛-K倍区间

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

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

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

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

    题目 题目链接 题解 DFS 本题我们要开两个标记数组 flag数组是个二维数组 用于标记某两只队伍是否进行过比赛了 另一是一维数组vis 用于标记某只队伍是否比过赛 两个数组的作用范围不同 vis数组只在每一行中有效 每到下一行时 vis
  • 蓝桥杯算法提高VIP-棋盘多项式

    题目 题目链接 题解 DFS 整体思路 横向分块 如下 我们只需要按连通块的序号去深搜即可 对于每个连通块 我们可以选择其中的任何一个空格作为放 車 的位置 或者选择不在这个连通块中放 車 因此 我们的问题转化为在dfs中如何确定连通块 如
  • 蓝桥杯算法训练VIP-单词接龙

    题目 题目链接 题解 DFS 真没想到居然是暴力搜索 感觉时间复杂度根本不允许啊 大致思路 每次递归都遍历全部字符串 对于每个字符串 枚举要匹配的长度 在此长度下依次匹配原串的尾与遍历到的字符串的头 完全相同说明可以匹配当前长度 就继续深搜
  • DFS 显示n个数中选取i(0~n)个数的情况

    include
  • 2016年蓝桥杯省赛C/C++ A组-寒假作业

    题目 现在小学的数学题目也不是那么好玩的 看看这个寒假作业 每个方块代表1 13中的某一个数字 但不能重复 比如 6 7 13 9 8 1 3 4 12 10 2 5 以及 7 6 13 9 8 1 3 4 12 10 2 5 就算两种解法
  • 2017年蓝桥杯B组C/C++省赛-分巧克力

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

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

    题目 题目链接 题解 DFS 一定看清要求 3 个 不同 正整数 正整数中不能包括2和4 满足加法交换律的算式属于一种情况 代码 include
  • 蓝桥杯历届试题-小朋友排队

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

    题目 题目链接 题解 DFS 八皇后问题改编而已 加入判断左上三格内和右上三格内是否存在皇后 代码 include
  • L2-016 愿天下有情人都是失散多年的兄妹 (25 分)

    题目 题目链接 题解 DFS 孩子向父母方向连边 将孩子视为根节点 首先判断输入两个人的性别 如果不同再分别以二者为起点进行dfs 前者五服之内的亲属都标记一下 以后者为起点dfs 如果遇到了标记的人 那么说明五服之内存在公共祖先 不可以结
  • 2021年蓝桥杯A组省赛-左children右sibling

    CXXX有毛病 左孩子右兄弟 字眼很敏感吗 题目 题目链接 题解 贪心 DFS 以 u u u 为根的子树选择包含节点最多的以 v v v 为根的子树作为最后连接的右兄弟能保证树向下延展的最多 所以重点转换为了计算以
  • 蓝桥杯算法训练VIP-求先序排列

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

    题目 题目链接 题解 DFS 采用的数据结构 vector 索引为起点 值为 终点 起点公司编号 当然你也可以保存终点公司编号 但是代码中的语句就需要改一下了 dfs 传入四个信息 当前节点 遇到的节点数 换乘数 当前节点所在公司的编号 由

随机推荐

  • 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题叫 符号三角形 可以看出上面一行的安排方式均由下面一行的安排方式决定 因此我们只要定好最后一行 那么上面的安排方式均可以由下行推出 且最后一行固定则整个