PAT甲级1147解题报告

18年春季第四题 PAT甲级 1147 Heaps (30分) 可以不建树 题目 来源:https://pintia.cn/problem-sets/994805342720868352/problems/994805342821531648 In computer science, aheapis a specialized tree-based data structure that satisfies the heap property: if P is a... 阅读详情

1147 Heaps (30 point(s))

In computer science, a heap is a specialized tree-based data structure that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either greater than or equal to (in a max heap) or less than or equal to (in a min heap) the key of C. A common implementation of a heap is the binary heap, in which the tree is a complete binary tree. (Quoted from Wikipedia at https://en.wikipedia.org/wiki/Heap_(data_structure))

Your job is to tell if a given complete binary tree is a heap.

Input Specification:

Each input file contains one test case. For each case, the first line gives two positive integers: M (≤ 100), the number of trees to be tested; and N (1 < N ≤ 1,000), the number of keys in each tree, respectively. Then M lines follow, each contains N distinct integer keys (all in the range of int), which gives the level order traversal sequence of a complete binary tree.

Output Specification:

For each given tree, print in a line Max Heap if it is a max heap, or Min Heap for a min heap, or Not Heap if it is not a heap at all. Then in the next line print the tree's postorder traversal sequence. All the numbers are separated by a space, and there must no extra space at the beginning or the end of the line.

Sample Input:

3 8
98 72 86 60 65 12 23 50
8 38 25 58 52 82 70 60
10 28 15 12 34 9 8 56

Sample Output:

Max Heap
50 60 65 72 12 23 86 98
Min Heap
60 58 52 38 82 70 25 8
Not Heap
56 12 34 28 9 8 15 10

题目大意:给一个序列,先做判断是大顶堆,小顶堆还是两者都不是,然后给出后序遍历。

解题思路:自己去实现大小堆判断太费事了,stl有现成的heap模板,就很简单的用make_heap函数然后判断之后的数组和之前的是不是一样就行了,如果不是大也不是小,那就输出Not Heap,然后后续遍历的问题其实就是先左子树后右子树,然后根节点,对于数组表示的堆结构,对于下标为i的元素,他的左子树为2*i,右子树为2*i+1,就简单的写个递归。

代码如下:

#include<iostream>
#include<string.h>
#include<vector>
#include<algorithm>
#include<iomanip>
#include<time.h>
#include<math.h>
#include<set>
#include<list>
#include<climits>
#include<queue>
#include<cstring>
#include<map>
#include<stack>
#include<string>
using namespace std;
bool cmp(int a, int b) {
	return a > b;
}
vector<int> r;
void Postorder(int i,int k,vector<int> a)
{
	if (i <=k)
	{
		Postorder(i * 2,k,a);
		Postorder(i * 2 + 1,k,a);
		r.push_back(a[i-1]);
	}
}
int main()
{
	int N,T;
	scanf("%d %d", &T, &N);
	while (T--) {
		vector<int> res;
		for (int i = 0; i < N; i++) {
			int tmp;
			scanf("%d", &tmp);
			res.push_back(tmp);
		}
		Postorder(1, N, res);
		vector<int> tmp = res;
		vector<int> typ = res;
		make_heap(tmp.begin(), tmp.end());
		make_heap(typ.begin(), typ.end(), cmp);
		if (tmp == res) {
			printf("Max Heap\n");
			for (int i = 0; i < r.size(); i++) {
				if (i != r.size() - 1) {
					printf("%d ", r[i]);
				}
				else {
					printf("%d\n", r[i]);
				}
			}
		}
		else if(typ==res){
			printf("Min Heap\n");
			for (int i = 0; i < r.size(); i++) {
				if (i != r.size() - 1) {
					printf("%d ", r[i]);
				}
				else {
					printf("%d\n", r[i]);
				}
			}
		}
		else {
			printf("Not Heap\n");
			for (int i = 0; i < r.size(); i++) {
				if (i != r.size() - 1) {
					printf("%d ", r[i]);
				}
				else {
					printf("%d\n", r[i]);
				}
			}
		}
		r.clear();
	}
	return 0;
}

 

记二开金蝶云星空动态表单艰辛历程 整个过程,开发接近一周,期间也有做其他事,遇到不会的第一时间也是找金蝶社区,搜索有无相关的解决问题经历。再就是问同事,最终还不能解决就提工单给供应商。响应一般都要大半天(我们公司是有vip,相对大半天能够响应是算好了),虽然有时候有响应,但是会转到其他研发老师,期间可能会是几天!如果是经常开发云星空的二开功能,熟练了速度回很快,但是对于接触不多的,或者刚入门的,会是个漫长的折磨过程。1、重新生产模块的dll.2、退出客户端3、重启iis4、等待五六分钟5、附加到进程6、登录客户端进去操作。 阅读详情

相关推荐

基因家族扩张收缩分析可视化(CAFE5)

CafePlotter 是一个用于可视化 CAFE5 基因家族扩张收缩分析结果的 Python 工具

xuzhougeng blog 3635

PAT甲级 1147 Heaps (30 分)

In computer science, a heap is a specialized tree-based data structure that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either greater than or equal to (in a max heap) or less than or equal to (in a min heap) t

DoMoreSpeakLess的博客 182

EAST算法(Efficient and Accuracy Scene Text))

1.EAST模型简介 本文介绍的文本检测模型EAST,便简化了中间的过程步骤,直接实现端到端文本检测,优雅简洁,检测的准确性和速度都有了进一步的提升。如下图: 其中,(a)、(b)、(c)、(d)是几种常见的文本检测过程,典型的检测过程包括候选框提取、候选框过滤、bouding box回归、候选框合并等阶段,中间过程比较冗长。而(e)即是本文介绍的EAST模型检测过程,从上图可看出,其过程简化为只有FCN阶段(全卷积网络)、NMS阶段(非极大抑制),中间过程大大缩减,而且输出结果支持文本行、单词的多个角度

博客 9579

PAT 甲级 1147

1147 Heaps (30 分) In computer science, a heap is a specialized tree-based data structure that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either greater ...

YOUN尔 275

京瓷扫描驱动安装_京瓷喷头拆解和供墨原理剖析

在工业喷头打印领域,京瓷喷头作为主流喷头广泛应用于喷墨行业,目前京瓷喷头市面上销售主要有两个系列:KJ4A和KJ4B。其中KJ4A系列设计是用于油性墨水,例如UV墨水,主要用在广告领域;而KJ4B设计用于水性墨水,例如活性、分散墨水等,主要用在数码印花领域。最近我们团队对京瓷喷头进行了拆解分析,本期和大家分享一下我们对京瓷喷头拆解和喷头供墨原理的研究。京瓷喷头介绍1. KJ4A系列(油性)如下图所...

weixin_39883906的博客 1672

基于奥比中光Orbbec Astra Pro与ROS实现实时3D环境建模:orb_slam2实战指南

本文提供了一份详细的实战指南,介绍如何使用奥比中光Orbbec Astra Pro深度摄像头与ROS系统,部署并运行ORB-SLAM2算法,实现实时3D环境建模与定位。内容涵盖从驱动安装、环境配置、算法编译到摄像头标定与性能调优的全流程,旨在帮助开发者快速搭建一套高性价比的视觉SLAM系统。

weixin_29054399的博客 334

PAT甲级 1140——1147

做做基础题练手,但是感觉pat难度在增加啊(是错觉嘛。。。。) 1140.Look-and-say Sequence (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Look-and-say sequence is a sequence of integers as the f...

darknight 1734

一、两电平IGBT整流器

电压源换流器(Voltage source converter,VSC)连接交流主网和直流电网,起到交直流网络连接、功率输送和电能变换的作用。采用电压控制手段可维持直流电压的稳定;或采用功率控制手段保证系统功率输出达到预期。VSC的三相电压平衡方程如式(1)所示:式中,igx和ugx分别表示主网三相电流与电压(x=a,b,c);ucx表示换流器VSC 交流输出电压;Rg表示交流主网等效电阻;Lg表示交流主网等效电感。

TUCHACHINA的博客 4159

PAT1147 Heap

原题链接:PAT1147 解析:这题应该就是简单的堆模拟,如果看得懂英文题意的话不算难。我的做法利用了二叉树的一个性质,即从上往下从左往右依次为节点编号为0,1,2....,那么第i个节点的左子节点编号为2*i+1,右子节点2*i+2。 我第一次没通过的原因:刚开始我判断循环条件为2*i+2 &lt; n,这样就有个问题,如果2*i+i &lt; n但是2*i+2 &gt; n就漏判了一个2*...

帅比王的博客 6048

【免费】最新区块链钱包和私钥的助记词碰撞器,bybit使用python开发

【免费】最新助记词钱包碰撞器,全链全网络,一周左右就有,稳定高效。

weixin_48529185的博客 1万+

基于Simulink的无迹卡尔曼滤波(UKF)SOC高精度估计仿真

本文介绍了基于Simulink的无迹卡尔曼滤波(UKF)在电池SOC高精度估计中的应用。通过无迹变换替代传统EKF的线性化过程,UKF显著提升了SOC估计精度,在强非线性工况下误差可控制在0.5%以内。文章详细阐述了UKF的核心原理,包括Sigma点生成、状态预测和观测更新等关键步骤,并基于Thevenin等效电路模型构建了完整的UKF SOC估算系统。通过Simulink建模和仿真验证,展示了UKF在大电流脉冲、变温工况等复杂场景下的优异性能,其动态响应时间小于30ms,长期累积误差低于0.7%。研究为储

amy_mhd的博客 124

PAT(甲级)1147

题意:给出完全二叉树的层序排列,判断它是大根堆还是小根堆或者不是堆,再将原序列转为后序排列输出。 题解:首先判断是不是堆,可以dfs看子节点与父节点的大小关系,或者直接for循环判断,层序转后序直接dfs一下即可。 注意点:判断堆时逻辑关系要清楚,总体来说事一道简单的30分题。 code in view // 层序转后序 #include<bits/stdc++.h> using na...

qq_42836930的博客 230

深入解析 OpenClaw(小龙虾)源码:架构设计与核心实现

OpenClaw用清晰、工程化的代码结构,将复杂的Agent交互流程变成了可管理、可扩展的流水线。无论是想深入了解Agent系统设计,还是希望二次开发定制自己的AI助理,阅读OpenClaw源码都是一次绝佳的学习旅程。希望本文能帮助你快速掌握OpenClaw的核心脉络。如果你对某个模块(如技能开发、安全机制)感兴趣,欢迎继续探讨。本文基于OpenClaw社区版本源码分析,具体实现可能随版本迭代有所调整,请以最新源码为准。

Ven%的博客 449

如何一个月左右拿下PAT甲级(浙大机试)满分

说明:本经验适用于PAT甲级难度(包括浙大保研机试、考研复试机试) 博主情况: 双非,无任何ACM经历,浙大保研机试满分(PAT甲级难度)。19年8月初开始准备机试,9月初考了秋季的PAT甲级,没过90感觉不够,9月中下旬参加浙大保研机试(同样是甲级难度),1个半小时左右拿下满分。 前期准备: 编程语言首选C++,要熟悉1-2个编译器,我用的是dev C++,要注意不同考场提供的编译器不同...

冬泉谷 5万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

PAT甲级部分python解题记录

用Python写PAT甲级,答案都在这了。每一道题都有原题、题目大意以及代码实现,大部分的题目都有详细的逻辑分析。欢迎大家一起来讨论!

贰拾壹 4479

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

PAT甲级 1147 Heaps

PAT甲级 1147 Heaps PAT1147链接 题目大意 给定查询次数M和完全二叉树的结点个数N及每棵树的层序遍历,每次查询输出它的后序遍历,并判断是否为最大最小堆 # include<iostream> # include<cstring> # include<vector> using namespace std; const int maxn = 1010; vector<int>post; int layer[maxn]; //int Compl

qq_41805174的博客 171

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【PAT甲级 - C++题解】1147 Heaps

📣专栏定位:为想考甲级PAT的小伙伴整理常考算法题解,祝大家都能取得满分!

Newin2020的博客 419

PAT——1147 Heaps 甲级

1147 Heaps题目题意题解AC代码参考 题目 https://pintia.cn/problem-sets/994805342720868352/problems/994805342821531648 题意 判断给定的某棵树的中序序列是大顶堆、小顶堆或者不是顶堆,并给出该树的后序序列(左右根) 题解 根据中序序列中,下标index对应的左节点为index * 2,右节点为index * 2+1的特性判断顶堆,同时运用递归按照左右根的顺序输出即可 AC代码 #include<bits/stdc++

ljhsq的博客 159

PAT【甲级】1147

题目链接:PAT【甲级】1147 题目简述:这个题目和1155还有点像。1155是让你去判断是哪种堆后,进行遍历序列的输出;而这个是要求去求得它的后序遍历,这个稍微简单一些,直接套递归版的后序遍历框架即可。 #include<bits/stdc++.h> using namespace std; void postOrder(vector<int>& tree, int beg, int N){ if(beg > N) return; postOrde

qq_41375322的博客 174

PAT甲级总结文

PAT甲级总结文(持续更新) 1089 Insert or Merge (25 分) 实现插入排序和归并排序

不屈不挠的拉普 989

PAT A1147 Heaps (30分) (堆的判定)

PAT甲级:A1147 Heaps (30分) In computer science, a heap is a specialized tree-based data structure that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either gre...

只想用最简短的代码刷题 238

2019年12月PAT甲级满分备考经验

PAT甲级满分备考经验合理的创建标题,有助于目录的生成 合理的创建标题,有助于目录的生成 直接输入1次#,并按下space后,将生成1级标题。 输入2次#,并按下space后,将生成2级标题。 以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。   我觉得刷题很需要用心记忆和理解,因为我发现这就和我大学准备数学考试一样,关键是记住理解课后题和笔记,考试就是这些题目的原样或者衍生...

时间的玫瑰的博客 607

PAT甲级备考题目整理

目录 1022 Digital Library (30 分)(模拟+不用gets读入) 1043 Is It a Binary Search Tree(25 分)(二叉搜索树) 1064 Complete Binary Search Tree (30 分)(二叉搜索树) PAT 甲级 1069~1072 ...

来啦(#^.^#) 1048

PAT 甲级 1147  Heaps

1147Heaps(30 point(s)) In computer science, aheapis a specialized tree-based data structure that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either g...

漫浸天空的雨色的备忘录~ 672

PAT甲级真题题解(更新中)

记录一下我的刷题历程(持续更新中~可能有些慢) PAT 甲级 1001 A+B Format PAT 甲级 1002 A+B for Polynomials PAT 甲级 1147 Heaps

youcaishen的博客 1006

PAT甲级考纲(最少的时间换尽可能多的分数)

下面的考纲从最重要的、考试概率最大的开始讲起,用最少的时间得最多的分数。祝大家考一个好成绩! 图论算法★★★★★ 图论算法几乎每年都有,99%会考,剩下1%是出卷老师啊想晃你一下。 搜索算法DFS/BFS★★★★ 假如出题老师手下留情,可能会出图的搜索问题。搜索算法一般以DFS和BFS为主,简单一点就是纯算法,难一点就是加上各种条件和剪枝。无论是在上机考试还是在PAT中,都属于基础题目,不一定出,...

Artorias的博客 4016
上一篇: PAT甲级1129解题报告
下一篇: 基于Google authentic实现的双因子登录认证系统前后台基于SSMP+Vue+Element(解决SecureRandom造成的服务器请求缓慢)
Tate_Brown
博客等级 码龄9年 39粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值