欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 题目 3342: 蓝桥杯2025年第十六届省赛真题-红黑树

题目 3342: 蓝桥杯2025年第十六届省赛真题-红黑树

2025/6/20 11:38:25 来源:https://blog.csdn.net/m0_75262437/article/details/148288058  浏览:    关键词:题目 3342: 蓝桥杯2025年第十六届省赛真题-红黑树

题目 3342: 蓝桥杯2025年第十六届省赛真题-红黑树
时间限制: 2s 内存限制: 192MB 提交: 273 解决: 89
题目描述
小蓝最近学习了红黑树,红黑树是一种特殊的二叉树,树上的结点有两种 类型:红色结点和黑色结点。 小蓝在脑海中构造出一棵红黑树,构造方式如下: 

1)根结点是一个红色结点; 

2)如果当前结点 curNode 是红色结点,那么左子结点 curNode.left 是红色 结点,右子结点 curNode.right 是黑色结点; 

3)如果当前结点 curNode 是黑色结点,那么左子结点 curNode.left 是黑色 结点,右子结点 curNode.right 是红色结点; 

此二叉树前几层的形态如下图所示:

                                   

小蓝会从树上随机挑选结点,请你帮忙判断下他选出的是红色结点还是黑色结点。

输入格式
输入的第一行包含一个正整数 m ,表示小蓝挑选的结点数。 

接下来 m 行,每行包含两个正整数 ni , ki ,用一个空格分隔,表示小蓝挑 选的结点是第 ni 行(从上往下数)第 ki 个(从左往右数)结点。

输出格式
输出 m 行,每行包含一个字符串,依次表示小蓝每次挑选的结点的答案。 RED 表示红色结点,BLACK 表示黑色结点。

样例输入复制
2
1 1
2 2
样例输出复制
RED
BLACK
提示
【样例说明】 

根据示意图可以观察出答案: 

第一行第一个结点,为根结点,红色;第二行第二个结点为黑色结点。 

【评测用例规模与约定】 

对于 20% 的评测用例,1 ≤ m ≤ 5 , 1 ≤ ni ≤ 5 ; 

对于 40% 的评测用例,1 ≤ m ≤ 10 , 1 ≤ ni ≤ 5 ; 

对于 60% 的评测用例,1 ≤ m ≤ 5 , 1 ≤ ni ≤ 10 ; 

对于 80% 的评测用例,1 ≤ m ≤ 10 , 1 ≤ ni ≤ 15 ; 

对于所有评测用例,1 ≤ m ≤ 10 , 1 ≤ ni ≤ 30 ,1 ≤ ki ≤ 2 ni−1 。

1.分析

        存储类似堆,右节点和父结点颜色不同,左节点和父结点颜色相同。

        从起始位置计算到1。

        看颜色是否和红色相同。

2.代码

#include<iostream>
#include<cmath>
using namespace std;
const int MAX = 1e5;
typedef long long LL;
int n;
int main() {cin >> n;while (n--) {int x, y;cin >> x >> y;int d = pow(2, x - 1)-1 + y;int f = 1;while (d > 1) {if (d % 2 != 0) {f *= -1;}d /= 2;}if (f == 1) cout << "RED" << endl;else cout << "BLACK" << endl;}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词