【PTA数据结构 | C语言版】关于堆的判断

本专栏持续输出数据结构题目集,欢迎订阅。

文章目录

    • 题目
    • 代码

题目

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

  • 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

题目引用自团体程序设计天梯赛真题(2016年)。

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAXN 1001
#define INF 0x7FFFFFFFint h[MAXN], size;
int pos[20001];  // 记录每个值在堆中的位置,值范围[-10000,10000],映射到[0,20000]// 初始化堆
void Create() {size = 0;h[0] = -INF;  // 哨兵,小于所有可能的元素值memset(pos, 0, sizeof(pos));  // 初始化位置数组
}// 插入元素到最小堆
void Insert(int x) {int i;for (i = ++size; h[i/2] > x; i /= 2) {h[i] = h[i/2];  // 上滤pos[h[i] + 10000] = i;  // 更新位置}h[i] = x;pos[x + 10000] = i;  // 记录新元素的位置
}// 判断命题
void Judge(char *statement) {int x, y;char op1[20], op2[20], op3[20];// 解析命题if (strstr(statement, "is the root")) {// 情况1: x is the rootsscanf(statement, "%d is the root", &x);printf("%c\n", (h[1] == x) ? 'T' : 'F');} else if (strstr(statement, "and") && strstr(statement, "are siblings")) {// 情况2: x and y are siblingssscanf(statement, "%d and %d are siblings", &x, &y);int posX = pos[x + 10000];int posY = pos[y + 10000];printf("%c\n", (posX/2 == posY/2) ? 'T' : 'F');} else if (strstr(statement, "is the parent of")) {// 情况3: x is the parent of ysscanf(statement, "%d is the parent of %d", &x, &y);int posX = pos[x + 10000];int posY = pos[y + 10000];printf("%c\n", (posY/2 == posX) ? 'T' : 'F');} else if (strstr(statement, "is a child of")) {// 情况4: x is a child of ysscanf(statement, "%d is a child of %d", &x, &y);int posX = pos[x + 10000];int posY = pos[y + 10000];printf("%c\n", (posX/2 == posY) ? 'T' : 'F');}
}int main() {int n, m, i, x;char statement[100];// 读取输入scanf("%d %d", &n, &m);// 构建最小堆Create();for (i = 0; i < n; i++) {scanf("%d", &x);Insert(x);}// 处理命题getchar();  // 消耗掉scanf后的换行符for (i = 0; i < m; i++) {fgets(statement, sizeof(statement), stdin);statement[strcspn(statement, "\n")] = 0;  // 去掉换行符Judge(statement);}return 0;
}    

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

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

相关文章

[CH582M入门第十步]蓝牙从机

前言 学习目标: 1、初步了解BLE协议 2、BLE从机代码解析 3、使用手机蓝牙软件控制CH582M从机LED亮灭一、蓝牙介绍 蓝牙(Bluetooth)是一种短距离无线通信技术,主要用于设备之间的数据传输和通信。它由爱立信(Ericsson)于1994年提出,现由蓝牙技术联盟(Bluetooth SIG)维…

力扣(LeetCode) ——轮转数组(C语言)

题目&#xff1a;轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例1&#xff1a; 输入&#xff1a; nums [1,2,3,4,5,6,7]&#xff0c;k 3 输出&#xff1a; [5,6,7,1,2,3,4] 解释&#xff1a; 向右轮转 1 步:…

Rocky9部署Zabbix7(小白的“升级打怪”成长之路)

目录 一、关闭防火墙和SElinux和配置安装源 二、zabbxi服务器配置 1、安装Zabbix server&#xff0c;Web前端&#xff0c;agent &#xff0c;mysql-server 2、配置mysql数据库 3、为Zabbix server配置数据库 4、启动对应服务 三、登录zabbix 四、客户端部署 五、解决中…

python安装package和pycharm更改环境变量

安装numpy包 1、找到对应python版本的numpy包的版本 NumPy - News确认适配python版本的numpy&#xff0c;我安装 的python是3.11所以安装的numpy是2.2.0 2、修改pip安装的镜像源 1、全局修改&#xff1a; pip config set global.index-url https://pypi.tuna.tsinghua.edu.c…

Redis中的setnx命令为什么是原子性的

Redis的SETNX命令是一个原子性操作&#xff0c;这得益于其单线程架构的特性。Redis采用单线程模型&#xff0c;所有命令都在主线程中顺序执行&#xff0c;确保每个操作都具有原子性。执行SETNX时&#xff0c;Redis会首先检查指定key是否存在&#xff1a;若不存在则设置值并返回…

深入解析Hadoop中的EditLog与FsImage持久化设计及Checkpoint机制

HDFS元数据管理概述在HDFS&#xff08;Hadoop Distributed File System&#xff09;的架构中&#xff0c;元数据管理是保证系统可靠性和性能的核心环节。NameNode作为HDFS的主节点&#xff0c;负责维护整个文件系统的命名空间和文件到数据块的映射关系。这些元数据的高效管理直…

MFC类Qt的自动布局框架

由于作者习惯使用Qt&#xff0c;习惯了其框架下的水平和垂直布局。但在使用MFC时&#xff0c;却发现并没有十分好用的布局框架&#xff0c;检索了部分资料&#xff0c;发现要么不提供源码&#xff0c;要么方案不理想。搜索了很多资料&#xff0c;最终发现一个可用方案&#xff…

认识Transformer架构

一.前言前面我们介绍了RNN相关系列的模型&#xff0c;在当今大模型时代大家认识一下就好了&#xff0c;而本章节我们是要来介绍一下重中之重的Transformer模型&#xff0c;本章节就来介绍一下他的架构&#xff0c;了解Transformer模型的作⽤以及了解Transformer总体架构图中各个…

Python学习之存数据

在得到了对应的数据之后可以考虑用文件或者数据库的方式把内容持久化下来方便之后的分析&#xff0c;此时可以使用pymongo库&#xff0c;寥寥几行代码&#xff0c;数据就已经很好地存储下来。&#xff08;此处可参考我们之前发的文章)在 Python 中引入&#xff1a;import pymon…

PointLLM - ECCV 2024 Best Paper Candidate

https://github.com/OpenRobotLab/PointLLM PointLLM: Empowering Large Language Models to Understand Point Clouds 核心问题 对比两种让大型语言模型&#xff08;LLM&#xff09;“看懂”三维世界的方法 间接方法&#xff1a;通过2D图像进行猜测。 这是目前比较常见但充…

前端-CSS-day6

目录 1、相对定位 2、绝对定位 3、绝对定位-居中 4、固定定位 5、堆叠顺序 6、CSS精灵-基本使用 7、案例-京东服务 8、字体图标-体验 9、使用字体图标 10、垂直对齐方式 11、过渡 12、透明度 13、光标类型 14、综合案例-轮播图 1、相对定位 <!DOCTYPE html>…

在离线 Ubuntu 22.04机器上运行 ddkj_portainer-cn 镜像 其他相关操作也可以复刻 docker

以下有免费的4090云主机提供ubuntu22.04系统的其他入门实践操作 地址&#xff1a;星宇科技 | GPU服务器 高性能云主机 云服务器-登录 相关兑换码星宇社区---4090算力卡免费体验、共享开发社区-CSDN博客 兑换码要是过期了&#xff0c;可以私信我获取最新兑换码&#xff01;&a…

数据结构系列之二叉搜索树

前言 这是我数据结构系列的第一篇&#xff0c;其余C语言模拟的数据结构均会在开学之后跟随老师上课而更新&#xff08;虽然我已经写完了&#xff09;&#xff0c;更新这块主要是因为要由二叉搜索树讲到AVL树再讲到红黑树&#xff0c;因为map和set的底层是红黑树&#xff0c;就…

系统架构师:软件工程-思维导图

软件工程的定义​​软件工程​​是一门系统性、规范化的工程学科&#xff0c;它将工程化的方法、工具和技术应用于软件的开发、运行与维护全生命周期&#xff0c;旨在解决软件复杂度带来的质量、成本和效率问题。其核心目标是通过结构化方法与技术实践&#xff0c;确保软件系统…

Django 入门详解:从零开始构建你的第一个 Web 应用

Django 是一个高级的 Python Web 框架&#xff0c;鼓励快速开发和干净、实用的设计。它遵循“不要重复造轮子&#xff08;Dont Repeat Yourself, DRY&#xff09;”的原则&#xff0c;内置了诸如用户认证、内容管理、表单处理等常见功能&#xff0c;非常适合构建内容驱动的网站…

[3-02-02].第04节:开发应用 - RequestMapping注解的属性2

SpringMVC学习大纲 注解的源码&#xff1a; 三、注解的params属性 3.1.params属性的理解&#xff1a; params属性用来通过设置请求参数来映射请求。对于RequestMapping注解来说&#xff1a; params属性也是一个数组&#xff0c;不过要求请求参数必须和params数组中要求的所有…

layui表格多选及选中

多选获取选中数据//获取选中行数据 var tbData table.cache["tablist2"]; var chkDatas tbData.filter(s > s.LAY_CHECKED true); if (vm.isEmpty(chkDatas) || chkDatas.length 0) {os.error("未选中数据&#xff01;");return; }单选选中样式及数…

卡尔曼滤波数据融合

状态向量&#xff1a;位置和速度 [x, y, vx, vy]预测阶段&#xff1a;用加速度估算速度和位置&#xff08;IMU数据&#xff09;更新阶段&#xff1a;用 GPS 位置修正漂移&#xff08;每隔一定时间才来一次&#xff09;import numpy as np# 时间步长&#xff08;秒&#xff09; …

Qwen3-8B 的 TTFT 性能分析:16K 与 32K 输入 Prompt 的推算公式与底层原理详解

一、模型概述与上下文支持能力Qwen3-8B 是通义实验室推出的 80 亿参数大语言模型&#xff0c;支持 32,768 token 的上下文长度 。其核心优化点包括&#xff1a;FP8 量化技术&#xff1a;通过将权重从 32-bit 压缩至 8-bit&#xff0c;显著降低显存占用并提升推理效率&#xff0…

【Spring Cloud Gateway 实战系列】基础篇:路由、断言、过滤器、负载均衡深度解析

一、引言在微服务架构中&#xff0c;API网关是流量的统一入口&#xff0c;承担着路由转发、流量管控、安全防护等核心职责。Spring Cloud Gateway作为Spring官方推荐的第二代网关&#xff0c;基于Spring 5.0、Spring Boot 2.0和Project Reactor构建&#xff0c;提供了高性能的响…