L2-012. 关于堆的判断
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. 关于堆的判断的更多相关文章
- codevs 2879 堆的判断
codevs 2879 堆的判断 http://codevs.cn/problem/2879/ 题目描述 Description 堆是一种常用的数据结构.二叉堆是一个特殊的二叉树,他的父亲节点比两个儿 ...
- ->code vs 2879 堆的判断(堆的学习一)
2879 堆的判断 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 堆是一种常用的数据结构.二叉堆是一个特殊的二叉树,他的父 ...
- 堆的判断(codevs 2879)
2879 堆的判断 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 堆是一种常用的数据结构.二叉堆 ...
- pat 团体天梯赛 L2-012. 关于堆的判断
L2-012. 关于堆的判断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的小顶堆H[] ...
- L2-012. 关于堆的判断(STL中heap)
L2-012. 关于堆的判断 将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “x is the root”:x是根结点: “x and y ...
- 【小顶堆的插入构造/遍历】PatL2-012. 关于堆的判断
L2-012. 关于堆的判断 时间限制 将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “x is the root”:x是根结点: “x a ...
- 【数组模拟-小顶堆的插入构造/遍历】PAT-L2-012.-关于堆的判断--数组模拟
L2-012. 关于堆的判断 将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “x is the root”:x是根结点: “x and y ar ...
- (PAT)L2-012 关于堆的判断 (最小堆)
题目链接:https://www.patest.cn/contests/gplt/L2-012 将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “ ...
- PTA L2-4 关于堆的判断
先上题面 链接 https://pintia.cn/problem-sets/994805046380707840/problems/994805064676261888 首先,题目描述的很清楚,这是 ...
随机推荐
- linux:C语言通过ICMP协议判断局域网内部主机是否存活
ICMP协议 ICMP(Internet Control Message,网际控制报文协议)是为网关和目标主机而提供的一种差错控制机制,使它们在遇到差错时能把错误报告给报文源发方. ICMP协议是IP ...
- MVC源码解析 - Http Pipeline 解析(下)
接上一篇, 我在 HttpModule 的Init方法中, 添加了自己的事件, 在Pipeline里, 就会把握注册的事件给执行了. 那么Pipeline是如何执行并且按照什么顺序执行的呢? 现在我们 ...
- jsp-4 用cookie实现记住密码
jsp-4 用cookie实现记住密码 这次就有点简单了 基本是jsp-3的代码但是有些修改 public void login(HttpServletRequest req, HttpServlet ...
- Angularjs通过$http与服务器通信
angular是一个前端框架,实现了可交互式的页面,但是对于一个web应用,页面上进行展示的数据从哪里来,肯定需要服务端进行支持,那么angular是如何同服务端进行交互的呢? $http angul ...
- 基于C++的类编程总结
1. 类中public, protected, private这三个属性的区别: public意味着所有事物都能查询具有该属性的食物.(也即所有人可以在我不知情的情况下,查看我账户里还有多少钱). p ...
- spring framework - 整体架构
Spring Framework 3.2 采用分层架构设计,包含一些列的功能要素,总结为以下几个部分 Core Container 该模块是Spring的核心容器,包含有Beans.Core.Cont ...
- laravel-1 安装.配置
听说laravel一直是一个很牛B的框架,之前接触过tp ci 也还只是一个小白,具体的核心没搞过,但对于我来说,框架都是拿来用的,会用即可. 以下内容为观看视频和自己查看资料后的整理,方便大家和自己 ...
- 【Map】Double Queue
Double Queue Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13258 Accepted: 5974 Des ...
- 运行ORB-SLAM笔记_编译篇(一)
1.下载代码 https://github.com/raulmur/ORB_SLAM/ (同时也可以看看作者的牛叉论文,我是打算先用代码,再回头看论文) 2.打开后如下 就好像是用一件新产品 ...
- 利用before、after制作提示框
提示框由两部分组成,框+箭头,箭头则利用伪元素before.after写成. 根据提示框的样式可以看出,上面的箭头由两部分组成:灰色大箭头+蓝色小箭头,蓝色嵌套在灰色里面,于是箭头就有了边框,整体搭配 ...