zoukankan      html  css  js  c++  java
  • PAT L2-012. 关于堆的判断

    数组模拟堆。

    #include<map>
    #include<set>
    #include<ctime>
    #include<cmath>
    #include<queue>
    #include<string>
    #include<vector>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<functional>
    using namespace std;
    
    int a[1500],n,m,b[1500];
    
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            b[i]=a[i]; int now=i;
            while(1)
            {
                if(now==1) break;
                if(b[now]<b[now/2])
                {
                    swap(b[now],b[now/2]);
                    now=now/2;
                }
                else break;
            }
        }
    
        for(int i=1;i<=m;i++)
        {
            int id1; char op[100];
            scanf("%d",&id1);
            while(1)
            {
                scanf("%s",op);
    
                if(strcmp(op,"root")==0)
                {
                    if(b[1]==id1) printf("T
    ");
                    else printf("F
    ");
                    break;
                }
    
                else if(strcmp(op,"and")==0)
                {
                    int id2; scanf("%d",&id2);
                    scanf("%s",op); scanf("%s",op);
    
                    int x=-1,y=-1; for(int i=1;i<=n;i++)
                    {
                        if(b[i]==id1) x=i;
                        if(b[i]==id2) y=i;
                    }
    
                    if(x/2==y/2) printf("T
    ");
                    else printf("F
    ");
    
                    break;
                }
    
                else if(strcmp(op,"parent")==0)
                {
                    scanf("%s",op);
                    int id2; scanf("%d",&id2);
    
                    int x=-1,y=-1; for(int i=1;i<=n;i++)
                    {
                        if(b[i]==id1) x=i;
                        if(b[i]==id2) y=i;
                    }
    
                    if(y/2==x) printf("T
    ");
                    else printf("F
    ");
    
                    break;
    
                }
    
                else if(strcmp(op,"child")==0)
                {
                    scanf("%s",op);
                    int id2; scanf("%d",&id2);
    
                    int x=-1,y=-1; for(int i=1;i<=n;i++)
                    {
                        if(b[i]==id1) x=i;
                        if(b[i]==id2) y=i;
                    }
    
                    if(x/2==y) printf("T
    ");
                    else printf("F
    ");
    
                    break;
    
                }
            }
        }
    
    
        return 0;
    }
  • 相关阅读:
    快速排序?
    算法和数据结构?
    渲染一个react?
    移动端兼容适配?
    PWA全称Progressive Web App,即渐进式WEB应用?
    InnoDB一棵B+树可以存放多少行数据?
    移动端首屏优化?
    InnoDB什么时候会锁表?
    数组去重,多种方法?
    如何处理异形屏iphone X?
  • 原文地址:https://www.cnblogs.com/zufezzt/p/6600421.html
Copyright © 2011-2022 走看看