【GPLT 二阶题目集】L2-012 关于堆的判断

news2025/1/18 2:12:18

将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:

x is the root:x是根结点;
x and y are siblings:x和y是兄弟结点;
x is the parent of y:x是y的父结点;
x is a child of y:x是y的一个子结点。

输入格式:

每组测试第1行包含2个正整数N(≤ 1000)和M(≤ 20),分别是插入元素的个数、以及需要判断的命题数。下一行给出区间[−10000,10000]内的N个要被插入一个初始为空的小顶堆的整数。之后M行,每行给出一个命题。题目保证命题中的结点键值都是存在的。

输出格式:

对输入的每个命题,如果其为真,则在一行中输出T,否则输出F。

输入样例:

5 4
46 23 26 24 10
24 is the root
26 and 23 are siblings
46 is the parent of 23
23 is a child of 10

输出样例:

F
T
F
T

#include <iostream>
#include <string>
#include <map>
using namespace std;

const int N = 1e5 + 10;
const int MAX = 0x3f3f3f3f;
int n, m, tree[N]; //全局变量自动初始化0
map<int, int> num; //值,编号

void creattree(int x)
{
    while (x != 1 && tree[x] < tree[x / 2])
    {
        swap(tree[x], tree[x / 2]);
        x /= 2;
    }
    return;
}

//int findd(int x) //找值对应的编号
//{
//    for (int i = 1; i <= n; i++)
//    {
//        if (tree[i] == x)
//            return i;
//    }
//}

int main()
{
    fill(tree, tree + N, MAX);
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
    { //升序储存,下标1~n
        cin >> tree[i];
        creattree(i);
    }
    for (int i = 1; i <= n; i++)
        num[tree[i]] = i;
    string str;
    int a, b;
    while (m--)
    {
        cin >> a >> str;
        if (str == "and") //a和b是兄弟结点?(仅考虑双亲相同)
        {
            cin >> b >> str >> str;
            if (num[a] / 2 == num[b] / 2)
                cout << "T" << endl;
            else
                cout << "F" << endl;
        }
        else //is
        {
            cin >> str >> str;
            if (str == "child") //a是b的一个子结点?(仅考虑相邻两代)
            {
                cin >> str >> b;
                if (num[a] / 2 == num[b])
                    cout << "T" << endl;
                else
                    cout << "F" << endl;
            }
            else if (str == "root") //a是根结点?
            {
                if (a == tree[1]) //写成tree[0],测试点1、2、3答案错误,说明测试点0很可能是样例
                    cout << "T" << endl;
                else
                    cout << "F" << endl;
            }
            else  //a是b的父结点?
            {
                cin >> str >> b;
                if (num[a] == num[b] / 2)
                    cout << "T" << endl;
                else
                    cout << "F" << endl;
            }
        }
    }
    return 0;
}

 注意事项:

该题不是给了一个无序堆再插入数据,而是可以直接建堆,因此难度有所降低。

如有问题,欢迎提出。

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

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

相关文章

MySQL数据库05——数据的查询(SELECT)

SQL强大的在于它的查询&#xff0c;查询是最重要的操作之一。 查询最基础的语法 查看student表里面全部内容&#xff1a; SELECT * FROM student整体语法格式 主要子句的语法格式归纳如下&#xff1a; SELECT [DISTINCT | ALL] select_list FROM table_sour…

MyBatis案例 | 使用映射配置文件实现CRUD操作——添加数据

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等&#xff0c;如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址&#xff1a;&#x1f525;JavaWeb Java入门篇&#xff1a; &#x1f525;Java基础学习篇 Java进阶学习篇&…

【GPLT 二阶题目集】L2-044 大众情人

人与人之间总有一点距离感。我们假定两个人之间的亲密程度跟他们之间的距离感成反比&#xff0c;并且距离感是单向的。例如小蓝对小红患了单相思&#xff0c;从小蓝的眼中看去&#xff0c;他和小红之间的距离为 1&#xff0c;只差一层窗户纸&#xff1b;但在小红的眼里&#xf…

肿瘤生信科研:绘制突变景观图(mutation landscape)

肿瘤生信科研经常会画突变的景观图&#xff0c;或者叫瀑布图&#xff0c;用 maftools 包可以实现简单的 Landscape 图&#xff0c;但是当图形比较复杂时&#xff0c;maftools 就不能胜任了&#xff0c;可以用 ComplexHeatmap 包来画。实际上&#xff0c;Landscape 图是热图的一…

ubuntu clion从0开始搭建一个风格转换ONNX推理网络 opencv cuda::dnn::net

系统搭建 系统搭建 OpenCV的安装 cmake sudo apt-get install cmake其他环境以来 sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev 不安装会报这个错误 OpenCV(4.6.0) /hom…

LeetCode刷题系列 -- 48. 旋转图像

给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例 1&#xff1a;输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]]输出&#…

【MySQL Shell】8.8 InnoDB ClusterSet 的紧急故障切换

紧急故障切换会将选定的副本集群放入 InnoDB ClusterSet 部署的主 InnoDB 集群中。当当前主集群不工作或无法联系时&#xff0c;可以使用此过程。在紧急故障切换过程中&#xff0c;无法确保数据一致性&#xff0c;因此为了安全起见&#xff0c;在故障切换过程中将原始主集群标记…

openHarmony的UI开发

自适应布局 拉伸能力 ​ Blank在容器主轴方向上&#xff0c;空白填充组件具有自动填充容器空余部分的能力。仅当父组件为Row/Column时生效&#xff0c;即是线性布局。这样便可以在两个固定宽度或高度的组件中间添加一个Blank()&#xff0c;将剩余空间占满&#xff0c;从而实现…

通过python 调用OpenAI api_key提交问题解答

通过python 调用OpenAI api_key提交问题解答✨可以通过网页版的jupyter notebook调用&#xff0c;也可以通过spyder窗口等IDE窗口. &#x1f33c;通过python 调用OpenAI api_key接口&#xff0c;可以避免国内网页不能访问的问题。前提是需要自己已经注册了OpenAI帐号&#xff…

linux中crontab定时任务导致磁盘满和云监控未报警的的坑

一个后台开发者&#xff0c;兼职运维工作中&#xff0c;配置linux中crontab定时任务&#xff0c;导致磁盘满和云监控未报警的问题的坑。 1.磁盘满 使用命令 df -h2.问题排查 2.1排查日志 命令 cat /var/log/messages日志文件的默认路径是&#xff1a;/var/log 下面是几个…

外贸常用工具(建议顶置收藏)

领英精灵 推荐理由&#xff1a;可批量群发消息并单独显示&#xff0c;相当于20人的发送效率。 做外贸的人一定会在Linkedin平台开发客户&#xff0c;但Linkedin平台没有提供群发消息的功能&#xff0c;如果要快速发消息的话&#xff0c;只能一个一个发&#xff0c;这种发送效…

使用Lame库实现wav、pcm转mp3

文章目录 前言 一、Lame库是什么&#xff1f; 二、使用步骤 0.创建native项目 1.下载Lame库 2.pcm转MP3 3.wav转MP3 4、native方法如下 三、注意 总结 前言 因为使用android录音后生成的文件是wav或者pcm格式&#xff0c;项目要求最后的文件需要是mp3格式&#xff0c;于…

tomcat10部署报错WebStatFilter cannot be cast to jakarta.servlet.Filter

异常信息09-Feb-2023 23:08:49.946 严重 [main] org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常[DruidWebStatFilter]java.lang.ClassCastException: com.alibaba.druid.support.http.WebStatFilter cannot be cast to jakarta.servlet.Filterat org.ap…

上科大最新工作!实时面捕天花板,微表情像素级一致,AI让你告别手Key|SIGGRAPH Asia 2022

驱动一个数字人往往被拆分为追踪 (Tracking) 与重定向 (Retargeting) 两个环节。 追踪由专业的面部捕捉设备及其辅助算法完成&#xff0c;负责记录演员的面部动作信息&#xff0c;重定向则是将捕捉到的动作信息迁移到新的角色。 在传统的流程中&#xff0c;这两个环节往往是分…

全价值链赋能,数字化助力营销价值全力释放 | 爱分析报告

报告编委 张扬 爱分析联合创始人&首席分析师 文鸿伟 爱分析高级分析师 王鹏 爱分析分析师 外部专家&#xff08;按姓氏拼音排序&#xff09; 黄洵 客易达 联合创始人 毛健 云徙科技 副总裁 & COO 特别鸣谢&#xff08;按拼音排序&#xff09; 报告摘要 在…

SpringSecurity前后端分离(一篇就够了)

SpringSecurity前后端分离 从上至下操作&#xff0c;直接上手SpringSecurity 文章目录SpringSecurity前后端分离1、项目环境maven依赖数据库表2、自定义UserService接口3、屏蔽Spring Security默认重定向登录页面以实现前后端分离功能1、实现登录成功/失败、登出处理逻辑1、表…

鉴源论坛 ·观擎丨民机机载软件的开发与验证

作者 | 蔡喁 上海控安可信软件创新研究院副院长 版块 | 鉴源论坛 观擎 01 机载软件过程保证的目的和背景 民机机载软件研制过程一直是行业内公认的要求最为严苛、开发验证难度最大的软件开发实例之一。由于其高安全以及严格的政府监管特性&#xff0c;使得传统其他领域的软件…

1. 用Qt开发的十大理由

用Qt的十大理由 原因最主要的是很多大公司都在用&#xff0c;有钱景。 先来看看各大公司的评价&#xff1a; 奔驰&#xff1a;们用 Qt 开发了绝大部分的UI体验和软件&#xff0c;包括屏幕动画&#xff0c;屏幕间的过渡和小组件。 FORMLABS&#xff1a;凭借Qt的快速迭代&…

记录一下slf4j2打印一直不成功

整理一个之前的老项目问题&#xff0c;发现日志一直打印不出来&#xff0c;本地启动发现了第一个问题日志如下&#xff1a;此处可发现&#xff0c;jar包冲突问题&#xff0c;去掉冲突的jar包即可&#xff0c;此处不做过多赘述。然后发现了重新启动项目&#xff0c;发现jar包冲突…

工业废水的种类及其处理工艺简析

随着工业的迅速发展&#xff0c;工业废水的种类和数量随之增加&#xff0c;对水体的污染也日趋严重&#xff0c;威胁人类的健康和正常生活。所以工业废水的处理对于环保至关重要。 保护生态环境、更好地做好工业废水的处理&#xff0c;了解工业废水及其种类与处理非常必要。 工…