• TTTTTTTTTTTT Codeforces Round #353 (Div. 2) D 平衡二叉树的set模拟 没有很懂


    题意:给你n个数字,第一个点作为根节点,然后每次插入一个节点,构建一棵平衡二叉树,并输出插入节点后该节点的父节点的值

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <cmath>
    #include <vector>
    #include <queue>
    #include <stack>
    #include <map>
    #include <algorithm>
    #include <set>
    using namespace std;
    typedef long long ll;
    typedef unsigned long long Ull;
    #define MM(a,b) memset(a,b,sizeof(a));
    const double eps = 1e-10;
    const int  inf =0x7f7f7f7f;
    const double pi=acos(-1);
    const int maxn=100000;
    
    set<int> s;
    map<int,int> l;
    map<int,int> r;
    
    int main()
    {
        int n,v;
        while(~scanf("%d",&n))
        {
            s.clear();
            l.clear();
            r.clear();
    
            scanf("%d",&v);
            s.insert(v);
            for(int i=2;i<=n;i++)
            {
                scanf("%d",&v);
                set<int>::iterator it=s.lower_bound(v);
                if(it==s.end())
                {
                   it--;
                   r[*it]=v;
                   printf("%d ",*it);
                   s.insert(v);
                   continue;
                }
    
                if(l[*it]==0)
                    l[*it]=v;
                else{
                    it--;
                    r[*it]=v;
                }
                printf("%d ",*it);
                s.insert(v);
            }
            printf("
    ");
        }
        return 0;
    }

    先前写的爆内存了,,因为最多可以2^1e5,,所以应该改成map,,不过用set模拟BST不太懂啊、、。。链接

      

  • 相关阅读:
    使用iptables禁止外网访问tomcat的8080端口
    解决ie浏览器下载apk或ipa变为zip
    'ᄈ'
    centos上安装grafana
    vertica单节点故障恢复 Startup Failed, ASR Required
    vertica审计日志
    centos安装nginx1.17.9
    centos上nginx转发tcp请求
    centos 安装mysql8.0.16
    centos下导出docx为html
  • 原文地址:https://www.cnblogs.com/smilesundream/p/5524047.html
Copyright © 2020-2023  润新知