关于堆的判断 (小顶堆)

天梯题集——关于堆的判断(小顶堆模板题、模拟构造过程) 堆是一种常用的树形结构,是一种特殊的完全二叉树,当且仅当满足所有节点的值总是不大于或不小于其父节点的值的完全二叉树被称之为堆。 堆的这一特性称之为堆序性。因此,在一个堆中,根节点是最大(或最小)节点。如果根节点最小,称之为小顶堆(或小根堆),如果根节点最大,称之为大顶堆(或大根堆)。 注意:堆的左右孩子没有大小的顺序。 关于堆的判断 这道题目完全可以看成一道堆的模板题,只要构建出小顶堆其他都好说。 解题思路 ①、构建小顶堆 小顶堆是构成原理: (1)插入第一个节点 (2)插入第二个节点(不符合小顶. 阅读详情
L2-3 关于堆的判断  

将一系列给定数字顺序插入一个初始为空的小顶堆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(≤\le≤ 1000)和M(≤\le≤ 20),分别是插入元素的个数、以及需要判断的命题数。下一行给出区间[−10000,10000][-10000, 10000][−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<cstdio>
#include<string>
#include<algorithm>
#include<cstdlib>
#define INF 1000000
using namespace std;
int a[1010],n,m;
int insert(int i){
	int temp;
	while(a[i/2]>a[i] && i!=1){
		temp=a[i];
		a[i]=a[i/2];
		a[i/2]=temp;
		i=i/2;
	}
	return 0;
}
int find(int x){
	//找爸爸
	int p,i;
	for(i=1;i<=n;i++)
	{
		if(a[i]==x)
		p=i;
	}
	return a[p/2];
}
int panduan(){
	string str,str1,str2;
	int x,y;
	char ch;
	cin>>x>>str;
	if(str=="and"){
		cin>>y>>str1>>str2;
		if(find(x)==find(y))
		cout<<"T"<<endl;
		else
		cout<<"F"<<endl;
		return 0;
	}
	cin>>str;
	if(str=="a"){
		cin>>str1>>str2>>y;
		if(find(x)==y)
		cout<<"T"<<endl;
		else
		cout<<"F"<<endl;
		return 0;
	}
	cin>>str;
	if(str=="root"){
		if(a[1]==x)
		cout<<"T"<<endl;
		else
		cout<<"F"<<endl;
		return 0;
	}
	cin>>str1>>y;
	if(find(y)==x)
	cout<<"T"<<endl;
	else
	cout<<"F"<<endl;
	return 0;
}
int main(){
	cin>>n>>m;
	int i,j;
	cin>>a[1];
	for(i=2;i<=n;i++){
		cin>>a[i];
		insert(i);//除了第一个节点不用进行插入排序,余下节点都需要进行插入排序
	}
	while(m--){
		panduan();//对字符串进行对错判断
	}
	return 0;
}


别再死记硬背了!图解小顶堆的‘插入建堆法’,轻松应对PTA堆判断题 本文通过图解方式详细解析小顶堆的构建方法,重点介绍顺序插入建堆法和Floyd算法的区别与应用,帮助读者轻松应对PTA堆判断题。文章包含核心概念、代码实现及解题思路,特别适合算法学习者和编程竞赛参与者。 阅读详情

相关推荐

Vite与Webpack路径配置大不同:从Vue2迁移到Vue3必须知道的public目录使用技巧

本文详细解析了Vite与Webpack在public目录路径配置上的核心差异,为Vue2迁移到Vue3的开发者提供实用指南。重点对比了两种构建工具的资源处理逻辑,给出典型编译警告的解决方案,并分享路径适配表与高级优化技巧,帮助开发者高效完成技术栈升级。

weixin_30836759的博客 485

关于堆的判断 (25 分)

基础知识: 大顶堆:每个结点的值都大于或等于其左右孩子结点的值 小顶堆:每个结点的值都小于或等于其左右孩子结点的值 二叉堆就是一颗二叉树,是一颗完全二叉树 定义两个操作: down(int k ):从编号为k的点向下更新 up(int k) :从编号为k的点向上更新 h[]堆数组,size堆当前大小 堆的变化(都可以由上面定义的两个操作来实现): 1.插入一个数 -> h[++ size] = x; up(size) 2.求集合中的最小值 -> h[1] 3.删除最小值 -> h[.

qq_51746125的博客 3032

重磅!Repo Wiki!

RepoWiki是Qoder平台的智能文档生成功能,通过静态代码分析自动提取项目架构、模块依赖和核心逻辑,并持续追踪代码变更保持文档同步。其工作流程分为四个阶段:1)代码扫描与AST解析;2)结构分析与依赖映射;3)文档智能生成;4)增量更新机制。支持多种编程语言,能识别设计模式并推断技术决策,适用于新项目搭建和遗留系统维护。优势在于降低理解成本和提高开发效率,但存在文件数量限制和依赖Git的局限性。典型应用场景包括自动生成架构图、API手册和团队知识沉淀。

ayusong870的博客 4024

堆的操作以及判断

常见的基础建堆将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。xxyxyxy。

shuyuan12346的博客 412

Xilinx SDK工程编译、链接、调试注意事项

1、添加工程 启动SDK时选取workspace,如下图所示: 对应的workpace文件夹中会生成如下几个文件: 如果当前workspace是首次加载工程,SDK会进入启动界面 点击Import Project,导入已有工程 点击Browse,添加工程路径,一个完整的工程包含一个bsp文件夹,一个HW文件夹,和一个src文件夹(添加C功能函数) 点击Fini...

Autumn_He的博客 1万+

【NLP】文献翻译4——CH-SIMS:中文多模态情感分析数据集与细粒度的模态注释

CH-SIMS: A Chinese Multimodal Sentiment Analysis Dataset with Fine-grained Annotations of Modality摘要1. 介绍2. 相关工作2.1 多模态数据集2.2 多模态情感分析2.3 多任务学习3. CH-SIMS 数据集3.1 数据获取3.2 标注3.3 特征提取4. 多模式多任务学习框架4.1 单模态子网4.2 特征融合网络4.3 优化目标5. 实验5.1 基准5.2 实验的细节5.3 结果和讨论5.3.1 与

YoungSeng's Blog 1万+

堆相关的一些操作

#include #include using namespace std; const int maxn = 100; //heap为堆,n为元素个数 int heap[maxn], n = 10; //对heap数组在[low,high]范围进行向下调整 //其中low为欲调整结点的数组下标,high一般为堆的最后一个元素的数组下标 void downAdjust(int low, int h

湛蓝的天空 446

jane street market prediction 冠军方案 奇巧淫技与topline链接整理(3/3)

目录前言将income 作为loss(优化目标)读取数据,定义优化目标模型训练与微调提交结果多目标学习Topline整理AE+MLP (rank10)Current 17th solution: Ensembles of deep (49 layer) MLPsmixup augmentation: a way to learn from trades with weight=0 (rank4)My (perhaps) over-complicated LSTM solutionCurrent 62nd .

weixin_51484067的博客 2639

数据结构 优先级队列(堆)---学习笔记

一、堆(heap) 1.1 概念 1.堆在结构是一颗完全二叉树。 2.从节点值看: 根节点的值一定不小于左右子树的节点值——大根堆(最大堆) 根节点的值一定不大于左右子树的节点值——小根堆(最小堆) 3.堆在物理上是保存在数组中 4.堆的实现基本都是基于二叉树——二叉堆。 判断一棵二叉树是不是堆从两点出发,首先看它的结构是否一棵完全二叉树,然后看根节点的值与左右子树节点值的大小关系,若根节点>=左右子树,则为最大堆,若根节点<=左右子树,则为最小堆。 ...

weixin_48271092的博客 1962

企业数字化转型解决方案架构设计:一个五维全景视角

本文系统探讨了企业数字化转型的架构设计框架,提出五维协同模型:企业架构作为战略罗盘,业务架构聚焦价值创造,应用架构实现能力载体,数据架构提供智能燃料,技术架构奠定基础支撑。文章深入分析了各架构域的核心要素、设计原则及相互关系,并指出数字化转型需通过渐进路径,结合战略引领、技术赋能和组织变革,构建有机统一的架构体系。该框架为企业应对数字化复杂性提供了系统性方法论,强调从整体视角实现技术与业务的深度融合。

金牌架构师 1256

linux那些事之numa balance

numa balance numa balance是页迁移技术最重要也是最开始使用应用的技术,主要是为解决由于调度器进程在两个node迁移造成访问内存性能问题。 numba balance通过页迁移技术,将不在运行节点的内存迁移到所运行的节点上。对应numa balance要注意几点: 防止进程在两个节点之前来回切换造成频繁进行页迁移(ping pang现场)从而影响性能。numa balance本身就是为了提高性能,不能因为造成频繁页迁移而对性能进行一个反向优化。 多个线程分布在不同线程 访.

weixin_42730667的博客 3908

堆的简单认识

从上图可以看到,数组中下标为 i 的结点的左子结点,就是下标为 2i 的结点,右子结点就是下标为 2i + 1 的结点,其父结点就是下标为 i/2 的结点。从下往上堆化的过程比较简单,实际上就是将插入的元素与父结点进行比较,出现不符合特性的情况就互换两个结点,一直重复这个过程,直至父子结点之间满足堆的特性。通常,对于大根堆会比较较大的子结点,对于小根堆会比较较小的子结点,出现不符合特性的情况就互换两个结点,一直重复这个过程,直至父子结点之间满足堆的特性。这种方法堆化之后的结果,肯定满足完全二叉树的特性。

csdn_manong1的博客 567

PPT里文字太多如何排版-一口气教你7种布局瞬间让PPT高大上起来

PPT里全是文字且很拥挤怎么办?本篇教你使用7种不同的排版让你的PPT瞬间变得高大上起来。

打造全国最全的AI Agent开发知识领域的博客 5022

【小顶堆】关于堆的判断

将一系列给定数字顺序插入一个初始为空的小顶堆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),...

Skynamer的博客 640

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C语言:L2-012 关于堆的判断 (25 分) — 小顶堆

文章目录一、题目二、方法11、思路2、代码 一、题目 将一系列给定数字顺序插入一个初始为空的小顶堆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),分别是插入元素的个数、以及需要判断的命题数。下一行给

WZRbeliever的博客 2718

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

L2-012. 关于堆的判断(小顶堆)

L2-012. 关于堆的判断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种: “x is

略略略的博客 1173

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

关于堆的判断——小顶堆的性质

小顶堆性质:根节点小于等于子树的完全二叉树。 c++代码: int a[MAX],cnt; map<int,int>p; void creat(int x){ //小顶堆建树 a[++cnt]=x; int t=cnt; while(t>1&&(a[t/2]>a[t])){ swap(a[t/2],a[t]); t/=2; } a[t]=x; } void solve() { int n,m; cin >>n>>m;

Sawako_S的博客 367

L2-012 关于堆的判断 (25分):小顶堆

将一系列给定数字顺序插入一个初始为空的小顶堆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个要被插入一个初始为

晚安( ̄o ̄) . z Z 271

L2-012 关于堆的判断(小顶堆)

L2-012 关于堆的判断 (25分) 将一系列给定数字顺序插入一个初始为空的小顶堆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

濡苏的博客 802

L2-012 关于堆的判断(判断小顶堆)

题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805064676261888 最小堆,是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于其左孩子和右孩子节点的值。 #include &lt;bits/stdc++.h&gt; using namespace std; int cnt; int a[1...

江西师范大学-20届-吴悠 1041

L2-012. 关于堆的判断 (小顶堆的应用)

L2-012. 关于堆的判断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种: “x is

吴贝贝的博客 739

L2-012. 关于堆的判断 (小顶堆)

L2-012. 关于堆的判断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种: “x is

MR CODER 1019

【小顶堆的插入构造/遍历】PatL2-012. 关于堆的判断

L2-012. 关于堆的判断 时间限制 将一系列给定数字顺序插入一个初始为空的小顶堆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”:...

weixin_30478923的博客 140

关于堆的判断(map+小顶堆数组模拟)

将一系列给定数字顺序插入一个初始为空的小顶堆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个要被插入一个初始为

qq_44061866的博客 243

L2-012 关于堆的判断 - 小顶堆(详解)

将一系列给定数字顺序插入一个初始为空的小顶堆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(≤...

m0_37579232的博客 1022

L2-012. 关于堆的判断【小顶堆模板】

小顶堆建初堆:void build(int v) { if(v*2==inf) return; int minn=inf,tmp; if(H[v*2]&lt;minn) minn=H[tmp=v*2]; if(H[v*2+1]&lt;minn) minn=H[tmp=v*2+1];//找到值最小的孩子节点 if(minn&lt;H[v])//如果最小的孩子节...

哇-WA 的博客 246
上一篇: 公路村村通 (最小生成树)
下一篇: L3-2 任务调度的合理性
danting1126
博客等级 码龄10年 10粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值