L2-012. 关于堆的判断

题目链接:https://www.patest.cn/contests/gplt/L2-012

终于ac了,简直要哭。题目还是很简单的,不过很多坑:

1.寻找x下标时,有可能返回0,即x是根结点;

2.字符串中字符的位置有可能会因串中的数字长度大小改变而改变(QAQ找了一个小时才发现是在这里);

3.gets(函数)会读取前一个分隔符(是我基础不好╮(╯▽╰)╭).

代码如下:

#include<cstdio>
#include<iostream>
using namespace std;
int a[];
int location(int key){
int k=;
while(a[k]!=key)k++;
return k;
}
int transint(char s[]){
if(s[]=='-'){
int temp=;
for(int i=;s[i]!=' '&&s[i]!='\0';i++)
temp=temp*+s[i]-'';
return -temp;
}else{
int temp=;
for(int i=;s[i]!=' '&&s[i]!='\0';i++)
temp=temp*+s[i]-'';
return temp;
}
}
int main(void){
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<n;i++){
scanf("%d",a+i);
int k=i;
while(k&&a[k]<a[(k-)/]){
swap(a[k],a[(k-)/]);
k=(k-)/;
}
}
while(m--){
bool flag;
char s[];
int x;
scanf("%d",&x);
gets(s);//由于gets会读取x后的分隔符,所以字符串s实际上是从' '开始的
//一开始用s[8]区分,发现第二种查询会因数字长度改变而改变
if(s[]=='t'&&s[]=='r'){//第一种查询
if(a[]==x)flag=;
else flag=;
}else if(s[]==' '){//第二种查询
int y=transint(&s[]);
int t=location(x);
if(t){
if(t&){
if(a[t+]==y)flag=;
else flag=;
}else{
if(a[t-]==y)flag=;
else flag=;
}
}else flag=;
}else if(s[]=='t'&&s[]=='p'){//第三种查询
int y=transint(&s[]);
int t=location(y);
if(t&&a[(t-)/]==x)flag=;
else flag=;
}else if(s[]=='a'){//第四种查询
int y=transint(&s[]);
int t=location(x);
if(t&&a[(t-)/]==y)flag=;
else flag=;
}
if(flag)printf("T\n");
else printf("F\n");
}
return ;
}

L2-012. 关于堆的判断的更多相关文章

  1. codevs 2879 堆的判断

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

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

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

  3. 堆的判断(codevs 2879)

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

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

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

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

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

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

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

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

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

  8. (PAT)L2-012 关于堆的判断 (最小堆)

    题目链接:https://www.patest.cn/contests/gplt/L2-012 将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “ ...

  9. PTA L2-4 关于堆的判断

    先上题面 链接 https://pintia.cn/problem-sets/994805046380707840/problems/994805064676261888 首先,题目描述的很清楚,这是 ...

随机推荐

  1. css修改滚动条默认样式

    之前因为公司项目需要,在网上找到的: 直接上代码了 html代码 <div class="inner"> <div class="innerbox&qu ...

  2. SQL SERVER BUG--Alwayson日志备份报错

    数据库版本 SQL SERVER 2012 企业版,版本号:11.0.5582.0 问题场景: 数据库配置Alwayson环境,同机房2节点同步自动切换+跨机房异步,在异步机房中选取同一节点做完整备份 ...

  3. sed常见用法,删除匹配行的上2行,下3行

    删除匹配的下一行到最后一行 [root@test200 ~]# cat test a b c d e f [root@test200 ~]# sed '/c/{p;:a;N;$!ba;d}' test ...

  4. Crystal Report 纵向排列,多列格式化

    一个表格区域就是一条数据,一张A4纸分布成2列4行打印. 这与通常的报表有点不一样,通常报表的明细都是一条一行:而现在要每2条放在一行,这需要用到“多列格式化”属性. 选择"多列格式”后,会 ...

  5. HTML <button>标签

    如果<button>标签在<form>中不加type="button",那么默认含义是"submit". <button>标 ...

  6. Linux连接xshell找不到IP信息

    虚拟机环境下的Linux连接xshell的网络连接找不到eth0(IP)信息的解决方法   1  输入ifconfig,如果有eth0信息,直接填写eth0上面的IP信息   2 输入ifconfig ...

  7. myBatis系列之七:事务管理

    myBatis系列之七:事务管理 如果在操作时,如果运行时错误自动进行回滚,需要以下两个配置 @Transactional()public void save(User user) { userDao ...

  8. js 设计模式-接口

    js模拟java接口检测函数:确保子类实现接口中的方法:(出自js设计模式) 上代码: <script type="text/javascript" > <%-- ...

  9. CodeForces 685B Kay and Snowflake

    树的重心,树形$dp$. 记录以$x$为$root$的子树的节点个数为$sz[x]$,重儿子为$son[x]$,重心为$ans[x]$. 首先要知道一个结论:以$x$为$root$的子树的重心$ans ...

  10. Python学习笔记——基础篇1【第三周】——set集合

    set集合 不允许重复的元素出现(相当于特殊的列表) set 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 练习:寻找差异 # 数据库中原有 old_dic ...