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

分析:根据输入依次在堆中插入元素建立小顶堆,因为判断元素间关系需要用位置做判断,因此通过 unordered_map 记录每个元素的数组中的序号,在接收到命题之后直接取出元素对应的位置 pos 就行了。

#include <bits/stdc++.h>
using namespace std;
vector<int> heap;
int len = 0;
void insert(int x) {
int hole = ++len;
for (; hole > 1 && heap[hole / 2] > x; hole /= 2)
heap[hole] = move(heap[hole / 2]);
heap[hole] = move(x);
}
int main() {
int n, m, a, b;
scanf("%d%d", &n, &m);
heap.resize(n + 1);
for (int i = 0; i < n; i++) {
scanf("%d", &a);
insert(a);
}
unordered_map<int, int> pos;
for (int i = 1; i <= n; i++) pos[heap[i]] = i;
char temp[10];
for (int i = 0; i < m; i++) {
scanf("%d %s", &a, temp);
if (strcmp(temp, "and") == 0) {
scanf("%d %*s %*s", &b);
printf("%c\n", pos[a] / 2 == pos[b] / 2 ? 'T' : 'F');
} else {
scanf("%*s %s", temp);
if (strcmp(temp, "root") == 0) printf("%c\n", a == heap[1] ? 'T' : 'F');
else {
scanf("%*s %d", &b);
if (strcmp(temp, "parent") == 0) printf("%c\n", pos[a] == pos[b] / 2 ? 'T' : 'F');
else
printf("%c\n", pos[b] == pos[a] / 2 ? 'T' : 'F');
}
}
}
return 0;
}

L2-012 关于堆的判断 (25分) (字符串處理)的更多相关文章

  1. PAT 1006 Sign In and Sign Out (25分) 字符串比较

    题目 At the beginning of every day, the first person who signs in the computer room will unlock the do ...

  2. PTA 05-树7 堆中的路径 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/713 5-5 堆中的路径   (25分) 将一系列给定数字插入一个初始为空的小顶堆H[] ...

  3. L2-032 彩虹瓶 (25 分)

    L2-032 彩虹瓶 (25 分)   彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里. 假设彩虹瓶里要按顺序装 N 种颜色的小 ...

  4. PAT 甲级 1060 Are They Equal (25 分)(科学计数法,接连做了2天,考虑要全面,坑点多,真麻烦)

    1060 Are They Equal (25 分)   If a machine can save only 3 significant digits, the float numbers 1230 ...

  5. PTA 字符串关键字的散列映射(25 分)

    7-17 字符串关键字的散列映射(25 分) 给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位:再用除留余 ...

  6. L2-006 树的遍历 (25 分) (根据后序遍历与中序遍历建二叉树)

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456 L2-006 树的遍历 (25 分 ...

  7. L2-013 红色警报 (25 分)

    L2-013 红色警报 (25 分)   战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全 ...

  8. PAT A1122 Hamiltonian Cycle (25 分)——图遍历

    The "Hamilton cycle problem" is to find a simple cycle that contains every vertex in a gra ...

  9. PAT A1142 Maximal Clique (25 分)——图

    A clique is a subset of vertices of an undirected graph such that every two distinct vertices in the ...

  10. 1122 Hamiltonian Cycle (25 分)

    1122 Hamiltonian Cycle (25 分) The "Hamilton cycle problem" is to find a simple cycle that ...

随机推荐

  1. 【Javaweb】了解link标签

    link标签的属性 标签就是定义文档和外部的关系,常见用途是链接样式表.通常指存在于head部分. 规定被连接文档的位置 <link rel='stylesheet' href='./ease. ...

  2. [ARC169E] Avoid Boring Matches

    题解链接 非常厉害的一道题. 考虑无解是什么情况? R 的个数超过 \(2^{n-1}\) 先考虑如何判定.从前往后考虑,如果遇到一个 B,那么如果后面有 R,就选最靠前的 R,否则选最靠后的一个 B ...

  3. JQuery_2

    1.动画:    1.三种方式显示和隐藏元素       1.默认方式       1.show([speed,[easing],[fn]])         1.参数:             1. ...

  4. C++学习笔记五:变量与数据类型(Auto类型)

    Auto 允许编译器自己来推断变量的类型,这种新功能是在c++11引入的.这个关键字结合for循环使用可以节省变量类型的重复输入.VS Code可以在鼠标移动到变量上之后直接显示变量的类型. auto ...

  5. Mock框架moco学习笔记

    目录 一.Moco框架基本介绍 1. 什么是Moco 2. Moco原理简介 3. Moco的配置和运行 4. Moco启动以及第一个demo 二.mock 的启动及第一个demo 1. 创建star ...

  6. Feign远程调用超时问题

    1.问题概述 上图的场景,每次重启项目后openFeign都会报一个超时异常,异常信息如下 2.为什么会产生这个异常? 当项目刚启动时,数据库连接池的中的连接并不会创建;第一次请求的时候才会初始化各种 ...

  7. 35. 干货系列从零用Rust编写负载均衡及代理,代理服务器的源码升级改造

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...

  8. 字节国际化TnS算法实习的碎碎念

    Motivation 在保研之后,我和南大的导师投了一篇个性化联邦学习的CVPR作为毕设.之后感觉就没什么事了,于是想着找个实习吧,第一个想法就是去字节实习,也只投了字节(别学我,还是多投一些哈哈,找 ...

  9. 华企盾DSC造成扫描仪无法扫描成pdf文件

    解决方法:去掉缩略图策略,重启电脑

  10. 文心一言 VS 讯飞星火 VS chatgpt (166)-- 算法导论13.1 6题

    六.用go语言,在一棵黑高为 k 的红黑树中,内部结点最多可能有多少个?最少可能有多少个? 文心一言: 红黑树是一种自平衡的二叉查找树,其中每个节点都有一个颜色属性,可以是红色或黑色.红黑树满足以下性 ...