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个要被插入一个初始为空的小顶堆的整数。之后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分) (字符串處理)的更多相关文章
- 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 ... 
- PTA 05-树7 堆中的路径   (25分)
		题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/713 5-5 堆中的路径 (25分) 将一系列给定数字插入一个初始为空的小顶堆H[] ... 
- L2-032 彩虹瓶 (25 分)
		L2-032 彩虹瓶 (25 分) 彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里. 假设彩虹瓶里要按顺序装 N 种颜色的小 ... 
- 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 ... 
- PTA 字符串关键字的散列映射(25 分)
		7-17 字符串关键字的散列映射(25 分) 给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位:再用除留余 ... 
- L2-006 树的遍历 (25 分) (根据后序遍历与中序遍历建二叉树)
		题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456 L2-006 树的遍历 (25 分 ... 
- L2-013 红色警报 (25 分)
		L2-013 红色警报 (25 分) 战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全 ... 
- PAT A1122 Hamiltonian Cycle (25 分)——图遍历
		The "Hamilton cycle problem" is to find a simple cycle that contains every vertex in a gra ... 
- PAT A1142 Maximal Clique (25 分)——图
		A clique is a subset of vertices of an undirected graph such that every two distinct vertices in the ... 
- 1122 Hamiltonian Cycle (25 分)
		1122 Hamiltonian Cycle (25 分) The "Hamilton cycle problem" is to find a simple cycle that ... 
随机推荐
- 【Android】做一个简单的每日打卡app-day01【还没做好】
			任务: 第一阶段目标: 1.用户注册:用户注册信息包括用户ID(学号).用户名(姓名),手机号码,用户单位(班级),用户班级四项基本信息,用户第一次注册后,用户姓名不用每次输入 . 2.每日总结打卡: ... 
- Access denied for user ‘root‘@‘localhost‘ (using password:YES)解决方法
			修改jdbc.properties文件的密码 
- 【译】使用 GitHub Copilot 编写 Git 提交
			在花费数小时修复 bug 或更新特性之后,我们开发人员最不愿意做的事情往往是仔细说明 Git 提交的内容.最新的 Visual Studio 预览版可以帮到您.使用新的生成 Git 提交消息特性来帮助 ... 
- 【解决方案】MySQL5.7 百万数据迁移到 ElasticSearch7.x 的思考
			目录 前言 一.一次性全量 二.定时任务增量 三.强一致性问题 四.canal 框架 4.1基本原理 4.2安装使用(重点) 版本说明 4.3引入依赖(测试) 4.4代码示例(测试) 五.文章小结 前 ... 
- Linux笔记03: Linux常用命令_3.4文件和目录共用命令
			3.4 目录和文件共用命令 3.4.1 rm命令 ●命令名称:rm. ●英文原意:remove files or directories. ●所在路径:/usr/bin/rm. ●执行权限:所有用户. ... 
- [AGC031E] Snuke the Phantom Thief
			Problem Statement A museum exhibits $N$ jewels, Jewel $1, 2, ..., N$. The coordinates of Jewel $i$ a ... 
- 【UniApp】-uni-app-数据传递补充
			前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-CompositionAPI传递数据 那么了解完了uni-app-CompositionAPI传递数据之后,这篇文章来给大家介绍一下 ... 
- pytorch学习笔记——训练时显存逐渐增加,几个epoch后out-of-memory
			问题起因:笔者想把别人的torch的代码复制到笔者的代码框架下,从而引起的显存爆炸问题 该bug在困扰了笔者三天的情况下,和学长一同解决了该bug,故在此记录这次艰辛的debug之路. 尝试思路1:检 ... 
- 如何有效应对员工违规使用U盘的情况?
			在面对员工违规使用U盘的挑战时,华企盾DSC数据防泄密系统提供了一套综合而高效的解决方案. 通过系统的U盘加密功能,我们能够防止未经授权的U盘访问,确保敏感数据不会被非法传输.这一层保护不仅是基础性的 ... 
- NC65元数据添加七彩版时注意点
			元数据添加七彩版时注意点 元数据七彩版模式 --- 主要添加Xml文件调整格式 添加时注意点如下 手动创建Panel时 自动生成的实现方法中有一个方法的返回值一定要为true 该方法主要是控制显不显示 ... 
