题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805064676261888

分析:这题看起来非常唬人,其实不难。。。。。四个judge基本没啥差,就是输入稍微注意一下,只要知道怎么构造一个堆是非常水的一道题目

堆的话就是二叉树,儿子的值一定不小于父亲的值,左子树是父亲节点的2倍,右子树是父亲节点2倍+1

用的是向上浮动的方法构造,听大牛说“必须注意,因为题目要求按照插入的顺序建立,所以是边插入边调整的,必须用向上调整,每次输入一个数之后就将它向上调整。(两者建立出来的二叉树不同)而不能采用先转换为二叉树的方式再向下调整。”

不过具体原因我也不知道。。。。。

上代码吧

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf=<<;
const double pi=acos(-);
const int mod=;
const int maxn=;
const int maxm=;
int a[maxn];int n,m;
void upadjust(int i){
if(i==)return ;
while(i!=){
if(a[i]<a[i/]){
swap(a[i],a[i/]);
i/=;
}else{
break;
}
}
}
void judge1(int x){
if(a[]==x)printf("T\n");
else printf("F\n");
}
void judge2(int x,int y){
int idxa,idxb;
for(int i=;i<=n;i++){
if(a[i]==x)idxa=i;
if(a[i]==y)idxb=i;
}
if(idxa>idxb) swap(idxa,idxb);//保证左边的是a,接下来好判断
if(idxa%==&&idxb-idxa==)printf("T\n");
else printf("F\n");
}
void judge3(int x,int y){
int idxa,idxb;
for(int i=;i<=n;i++){
if(a[i]==x)idxa=i;
if(a[i]==y)idxb=i;
}
if(idxa*==idxb||idxa*==idxb-)printf("T\n");
else printf("F\n");
}
void judge4(int x,int y){
int idxa,idxb;
for(int i=;i<=n;i++){
if(a[i]==x)idxa=i;
if(a[i]==y)idxb=i;
}
if(idxb*==idxa||idxb*==idxa-)printf("T\n");
else printf("F\n");
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
upadjust(i);
}
char c[];
int x,y;
for(int i=;i<m;i++){
scanf("%d%s",&x,c);
if(strcmp(c,"and")==){
scanf("%d%s%s",&y,c,c);
judge2(x,y);
}
else{
scanf("%s",c);
if(strcmp(c,"a")==){
scanf("%s%s%d",c,c,&y);
judge4(x,y);
}
else {
scanf("%s",c);
if(strcmp(c,"root")==){
judge1(x);
}
else{
scanf("%s%d",c,&y);
judge3(x,y);
}
}
}
}
return ;
}

堆排序 GPLT L2-012 关于堆的判断的更多相关文章

  1. PAT 天梯赛 L2-012. 关于堆的判断 【Heap】【STL】

    题目链接 https://www.patest.cn/contests/gplt/L2-012 思路 使用 STL 里面有关 Heap 的函数 std::make_heap将[start, end)范 ...

  2. L2-012. 关于堆的判断

    L2-012. 关于堆的判断 题目链接:https://www.patest.cn/contests/gplt/L2-012 终于ac了,简直要哭.题目还是很简单的,不过很多坑: 1.寻找x下标时,有 ...

  3. pat 团体天梯赛 L2-012. 关于堆的判断

    L2-012. 关于堆的判断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的小顶堆H[] ...

  4. codevs 2879 堆的判断

    codevs 2879 堆的判断 http://codevs.cn/problem/2879/ 题目描述 Description 堆是一种常用的数据结构.二叉堆是一个特殊的二叉树,他的父亲节点比两个儿 ...

  5. ->code vs 2879 堆的判断(堆的学习一)

    2879 堆的判断  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold   题目描述 Description 堆是一种常用的数据结构.二叉堆是一个特殊的二叉树,他的父 ...

  6. 堆的判断(codevs 2879)

    2879 堆的判断  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 堆是一种常用的数据结构.二叉堆 ...

  7. L2-012. 关于堆的判断(STL中heap)

    L2-012. 关于堆的判断   将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “x is the root”:x是根结点: “x and y ...

  8. 【小顶堆的插入构造/遍历】PatL2-012. 关于堆的判断

    L2-012. 关于堆的判断 时间限制   将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “x is the root”:x是根结点: “x a ...

  9. 【数组模拟-小顶堆的插入构造/遍历】PAT-L2-012.-关于堆的判断--数组模拟

    L2-012. 关于堆的判断 将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “x is the root”:x是根结点: “x and y ar ...

随机推荐

  1. 前缀判断|2013年蓝桥杯B组题解析第五题-fishers

    前缀判断 如下的代码判断 needle_start指向的串是否为haystack_start指向的串的前缀,如不是,则返回NULL. 比如:"abcd1234" 就包含了 &quo ...

  2. 【字符串区别】SQLServer中char、varchar、nchar、nvarchar的区别:

    一.定义 char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固定长度,存储Unicode字符,不足的补英文半角空格 varchar:  可变长度,存储ANSI字符 ...

  3. IAR中的 identifier "FILE" is undefined 问题

     最近由于希望使用IAR的printf()函数方便进行打印字符,出现IAR报错,即:identifier "FILE" is undefined,问题得以解决.   (1)进行pr ...

  4. 常用模块(subprocess/hashlib/configparser/logging/re)

    一.subprocess(用来执行系统命令) import os cmd = r'dir D:xxx | findstr "py"' # res = subprocess.Pope ...

  5. 蚂蚁金服首席数据科学家漆远:AI技术开放,与业界融合共创

    小蚂蚁说: 11月8日,在第五届世界互联网大会-<人工智能:融合发展新机遇>论坛上,蚂蚁金服副总裁.首席数据科学家漆远认为AI具有控制风险.降本增效和提升用户体验三大作用. 11月8日,第 ...

  6. Spring Bean后置处理器

    本例子源于:W3CSchool,在此作记录 Bean 后置处理器允许在调用初始化方法前后对 Bean 进行额外的处理. BeanPostProcessor 接口定义回调方法,你可以实现该方法来提供自己 ...

  7. 剖析Hadoop和Spark的Shuffle过程差异

    一.前言 对于基于MapReduce编程范式的分布式计算来说,本质上而言,就是在计算数据的交.并.差.聚合.排序等过程.而分布式计算分而治之的思想,让每个节点只计算部分数据,也就是只处理一个分片,那么 ...

  8. python模块(4)

    re正则 re.match 从头开始匹配 re.search 匹配包含 re.findall 把所有匹配到的字符放到以列表中的元素返回(没有group()方法) re.splitall 以匹配到的字符 ...

  9. linux c/c++ 文件是否存在

    linux c/c++ 文件是否存在 #include <unistd.h> int FileExist(const char* fname) { return access(fname, ...

  10. 控制 datetimepicker 显示位置

    1. datetimepicker 位置  pickerPosition  有以下几个属性值,望文生义不解释 $('.form_datetime').datetimepicker({ pickerPo ...