当前位置:网站首页>关于堆的判断 (25 分) 两种插入方式
关于堆的判断 (25 分) 两种插入方式
2022-04-23 08:35:00 【怀化第二深情】
将一系列给定数字顺序插入一个初始为空的小顶堆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 <algorithm>
#include <unordered_map>
using namespace std;
const int N = 10010;
int n, m;
int h[N], cnt=0;
// void up(int u) {
// while (h[u] < h[u >> 1]&&u/2>0 ) {
// swap(h[u], h[u >> 1]);
// u >>= 1;
// }
// }
void insert(int u){
h[++cnt]=u;
int i=cnt;
while(i/2&&h[i]<h[i/2]){
swap(h[i],h[i/2]);
i/=2;
}
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
int x;
cin >> x;
// h[++cnt] = x;
// up(i);
insert(x);
}
unordered_map<int, int> mp;
for (int i = 1; i <= n; i++) mp[h[i]] = i;
while (m--) {
int a;
cin >> a;
string s1;
cin >> s1;
if (s1 == "and") {
int b;
cin >> b;
cin >> s1 >> s1;
if (mp[a] / 2 == mp[b] / 2) puts("T");
else puts("F");
}
else {
cin >> s1;
if (s1 == "a") {
cin >> s1 >> s1;
int b;
cin >> b;
if (mp[a] / 2 == mp[b]) puts("T");
else puts("F");
}
else {
cin >> s1;
if (s1 == "root") {
if (a == h[1]) puts("T");
else puts("F");
}
else {
cin >> s1;
int b;
cin >> b;
if (mp[b] / 2 == mp[a]) puts("T");
else puts("F");
}
}
}
}
return 0;
}
版权声明
本文为[怀化第二深情]所创,转载请带上原文链接,感谢
https://blog.csdn.net/dege2929512534/article/details/124340130
边栏推荐
- Yangtao electronic STM32 Internet of things introduction 30 steps notes 1. The difference between Hal library and standard library
- Copy array in JS
- 增强现实技术是什么?能用在哪些地方?
- QT reading and writing XML files
- form中enctype属性
- 使用flask和h5搭建网站/应用的简要步骤
- 信息收集相关知识点及题解
- ELK生产实践
- MySQL查询两张表属性值非重复的数据
- 关于cin,scanf和getline,getchar,cin.getline的混合使用
猜你喜欢

【深度好文】Flink SQL流批⼀体化技术详解(一)

第一性原理 思维导图

MySQL查询两张表属性值非重复的数据

MATLAB 画五星红旗

测试你的机器学习流水线

【58】最后一个单词的长度【LeetCode】

项目上传部分

Yangtao electronic STM32 Internet of things entry 30 step notes IV. engineering compilation and download

Virtual online exhibition - Online VR exhibition hall realizes 24h immersive exhibition viewing

00后最关注的职业:公务员排第二,第一是?
随机推荐
MATLAB 画五星红旗
测试你的机器学习流水线
How to generate assembly file
Yangtao electronic STM32 Internet of things entry 30 step notes II. Cube ide download, installation, sinicization and setting
RCC introduction of Hal Library
耳穴诊疗随笔0421
Copy array in JS
Stm32f103zet6 [development of standard library functions] - Introduction to library functions
K210学习笔记(二) K210与STM32进行串口通信
Anonymous type (c Guide Basics)
使用flask和h5搭建网站/应用的简要步骤
Yangtao electronic STM32 Internet of things entry 30 step notes IV. engineering compilation and download
正点原子携手OneOS直播 OneOS系统教程全面上线
php基于哈希算法出现的强弱比较漏洞
RPC过程
求简单类型的矩阵和
On time atom joins hands with oneos live broadcast, and the oneos system tutorial is fully launched
RPC procedure
swagger文档导出自定义v2/api-docs拦截
Description of the abnormity that the key frame is getting closer and closer in the operation of orb slam