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

  • x is the rootx是根结点;
  • x and y are siblingsxy是兄弟结点;
  • x is the parent of yxy的父结点;
  • x is a child of yxy的一个子结点。

输入格式:

每组测试第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. 【Android】做一个简单的每日打卡app-day01【还没做好】

    任务: 第一阶段目标: 1.用户注册:用户注册信息包括用户ID(学号).用户名(姓名),手机号码,用户单位(班级),用户班级四项基本信息,用户第一次注册后,用户姓名不用每次输入 . 2.每日总结打卡: ...

  2. Access denied for user ‘root‘@‘localhost‘ (using password:YES)解决方法

    修改jdbc.properties文件的密码

  3. 【译】使用 GitHub Copilot 编写 Git 提交

    在花费数小时修复 bug 或更新特性之后,我们开发人员最不愿意做的事情往往是仔细说明 Git 提交的内容.最新的 Visual Studio 预览版可以帮到您.使用新的生成 Git 提交消息特性来帮助 ...

  4. 【解决方案】MySQL5.7 百万数据迁移到 ElasticSearch7.x 的思考

    目录 前言 一.一次性全量 二.定时任务增量 三.强一致性问题 四.canal 框架 4.1基本原理 4.2安装使用(重点) 版本说明 4.3引入依赖(测试) 4.4代码示例(测试) 五.文章小结 前 ...

  5. Linux笔记03: Linux常用命令_3.4文件和目录共用命令

    3.4 目录和文件共用命令 3.4.1 rm命令 ●命令名称:rm. ●英文原意:remove files or directories. ●所在路径:/usr/bin/rm. ●执行权限:所有用户. ...

  6. [AGC031E] Snuke the Phantom Thief

    Problem Statement A museum exhibits $N$ jewels, Jewel $1, 2, ..., N$. The coordinates of Jewel $i$ a ...

  7. 【UniApp】-uni-app-数据传递补充

    前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-CompositionAPI传递数据 那么了解完了uni-app-CompositionAPI传递数据之后,这篇文章来给大家介绍一下 ...

  8. pytorch学习笔记——训练时显存逐渐增加,几个epoch后out-of-memory

    问题起因:笔者想把别人的torch的代码复制到笔者的代码框架下,从而引起的显存爆炸问题 该bug在困扰了笔者三天的情况下,和学长一同解决了该bug,故在此记录这次艰辛的debug之路. 尝试思路1:检 ...

  9. 如何有效应对员工违规使用U盘的情况?

    在面对员工违规使用U盘的挑战时,华企盾DSC数据防泄密系统提供了一套综合而高效的解决方案. 通过系统的U盘加密功能,我们能够防止未经授权的U盘访问,确保敏感数据不会被非法传输.这一层保护不仅是基础性的 ...

  10. NC65元数据添加七彩版时注意点

    元数据添加七彩版时注意点 元数据七彩版模式 --- 主要添加Xml文件调整格式 添加时注意点如下 手动创建Panel时 自动生成的实现方法中有一个方法的返回值一定要为true 该方法主要是控制显不显示 ...