• [HDU] 5444.Elven Postman (堆)


    题意:对于一个堆,找出从根节点出发到某一个点的行走的路径

    输入:第一行数据组数T,每一组第1行元素个数n,第2行各个元素,第3行询问个数,第4行询问元素。

    输出:每一询问元素打印出由"E","W”组成的字符串,若所查询节点就是根节点,则输出一个空行

    For instance, the sequence 2, 1, 4, 3 would be written on the root of the following tree.

    Sample Input
    2
    4
    2 1 4 3
    3
    1 2 3
    6
    6 5 4 3 2 1
    1
    1
     
    Sample Output
    E
     
     
    WE
    EEEEE
     
    就是一道暴力模拟堆的题目,需要注意的是处理每组数据都要重置树的各个节点,还有插入时的一些细节。
    这里我用的是数组进行模拟,下面就是代码。
    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    const int MAXN=1010;
    struct pt
    {
        int l,r;
        pt(int l=-1,int r=-1):l(l),r(r){}
    
    }p[MAXN];
    
    int qr[MAXN];
    int rt;
    void ph(int k)
    {
        int t=rt;
        while(t!=-1)
        {
            if(p[t].l==-1&&t>k)
            {
                p[t].l=k;
                break;
            }
            if(p[t].r==-1&&t<k)
            {
                p[t].r=k;
                break;
            }
            t = k<t? p[t].l:p[t].r;
        }
    }
    
    void find(int k)
    {
        int t=rt;
        while(k!=t)
        {
            if(k>t)    printf("W"),t=p[t].r;
            else if(k<t) printf("E"),t=p[t].l;
        }
        printf("
    ");
    }
    
    
    int main()
    {
        int t,q;
        cin>>t;
        while(t--)
        {
            for(int i=1;i<MAXN;++i)  //重置节点
                p[i].l=p[i].r=-1;
            int n,k;
            cin>>n;
            for(int i=1;i<=n;++i)
            {
                scanf("%d",&k);
                if(i==1)    rt=k;
                ph(k);
            }
            cin>>q;
            for(int i=1;i<=q;++i)
                scanf("%d",&qr[i]);
            for(int i=1;i<=q;++i)
                find(qr[i]);
        }
        return 0;
    }
  • 相关阅读:
    css 基础
    css 基础-1
    html 入门2-表
    CMDB (后台管理) CURD 插件
    序列化
    AES(高级加密)
    API验证
    数据库取时间(分组)
    用户权限 (知识点)
    xss 过滤
  • 原文地址:https://www.cnblogs.com/JNzH/p/11247154.html
Copyright © 2020-2023  润新知