zoukankan      html  css  js  c++  java
  • codevs 2879 堆的判断

      题目描述 Description

      堆是一种常用的数据结构。二叉堆是一个特殊的二叉树,他的父亲节点比两个儿子节点要大,且他的左右子树也是二叉堆。现在输入一颗树(用二叉树的数组表示,即a[i]的左儿子与右儿子分别为a[2i],a[2i+1]),要求判断他是否是一个堆。

      输入描述 Input Description

      一个整数N,表示结点数。

      第二行N个整数,表示每个结点代表的数字

      输出描述 Output Description

      如果是,输出‘Yes’

      否则输出‘No’

      样例输入 Sample Input

      5

      1 2 3 4 5

      样例输出 Sample Output

      No

      数据范围及提示 Data Size & Hint

      1<N<100

      数字在2^31以内

      很洪水的一道题,发出来就是为了证明我还活着。。 

      恶补一下基础知识 。堆(也叫优先队列),是一棵完全二叉树,它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排 序,优先队列等。

      

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    
    bool flag;
    int n,i,j,a[103111];
    int main()
    {
        cin>>n;
        for(i=1;i<=n;++i)
            cin>>a[i];
        for(i=1;i<=n;++i)
        {
            if(a[i]>a[i<<1]&&a[i]>a[i<<1+1])
            continue;
            else 
            {
                flag=true;
                break;
            }
        }
        if(flag) cout<<"No";
        else cout<<"Yes";
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    SpringMvc 大概流程分析
    HandlerMethodArgumentResolver 参数解析器
    linux 技巧:使用 screen 管理你的远程会话
    CentOS Linux解决Device eth0 does not seem to be present
    php连接oracle oracle开启扩展
    关于linux一些备份、还原,压缩,归档的命令
    Sphinx学习之sphinx的安装篇
    linux wget 命令用法详解(附实例说明)
    Linux的bg和fg命令
    linux中ctrl+z和ctrl+c的区别
  • 原文地址:https://www.cnblogs.com/ruojisun/p/6238753.html
Copyright © 2011-2022 走看看