堆排序 GPLT L2-012 关于堆的判断
题目链接: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 关于堆的判断的更多相关文章
- PAT 天梯赛 L2-012. 关于堆的判断 【Heap】【STL】
题目链接 https://www.patest.cn/contests/gplt/L2-012 思路 使用 STL 里面有关 Heap 的函数 std::make_heap将[start, end)范 ...
- L2-012. 关于堆的判断
L2-012. 关于堆的判断 题目链接:https://www.patest.cn/contests/gplt/L2-012 终于ac了,简直要哭.题目还是很简单的,不过很多坑: 1.寻找x下标时,有 ...
- pat 团体天梯赛 L2-012. 关于堆的判断
L2-012. 关于堆的判断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的小顶堆H[] ...
- 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 堆是一种常用的数据结构.二叉堆 ...
- 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 ...
随机推荐
- 题解——洛谷P2734 游戏A Game 题解(区间DP)
题面 题目背景 有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的任意一端取一个数,取数后该数字被去掉并累加到本玩家的 ...
- (zhuan) How to Train Neural Networks With Backpropagation
this blog from: http://blog.demofox.org/2017/03/09/how-to-train-neural-networks-with-backpropagation ...
- Python 编码规范 PEP8
1 Introduction Guido 的核心思想是:对于代码而言,相比于写,它更多是被用来读的.这个指导旨在使Python代码更易读,且具有更强的协调性. 2 A Foolish Consiste ...
- hdu 5212 Code 筛法或者莫比乌斯
Code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Des ...
- 《Linux命令行与shell脚本编程大全》读书笔记
第一章:初识Linux 1.linux可划分为四个部分:内核.GNU工具.图形化桌面环境.应用程序 2.内核主要负责:系统内存管理.软件程序管理.硬件设备管理.文件系统管理 3.内核的系统内存管理,有 ...
- 【SQL Prompt】SQL Prompt7.2下载及破解教程
基本介绍 SQL Prompt能根据数据库的对象名称,语法和用户编写的代码片段自动进行检索,智能的为用户提供唯一合适的代码选择.自动脚本设置为用户提供了简单的代码易读性--这在开发者使用的是不大熟悉的 ...
- [osg]osg窗口显示和单屏幕显示
osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFile("cow.osg"); osg::ref_ptr&l ...
- [jshint] 'import' is only available in ES6 (use 'esversion: 6'). (W119) 提示import等ES6语法的jshint错误的,在代码前加一行 /* jshint esversion: 6 */
官方下载了vue的简单项目,用vscode打开main.js,代码前出现黄点,js报错了 把鼠标移至import的波浪线上,出现提示:W119 - ‘import’ is only availabl ...
- 利用vue-cli3快速搭建vue项目详细过程
一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cli 全局安装的 npm 包,提供了终端里的vue命令(如:vue create .vue ...
- es6 export 和export default的区别
区别 export 每个文件中可使用多次export命令 import时需要知道所加载的变量名或函数名 import时需要使用{},或者整体加载方法 export export default 每个文 ...