zoukankan      html  css  js  c++  java
  • 之前一道求逆序的线段树模板

    struct node {
        
    int l,r;
        node 
    * pl, * pr;
        
    int count;
    }
    mem[200];
    int mem_pos;
    int anti, n, ans[200], num[200];
    node 
    * root;

    node 
    * new_node()
    {
        node 
    * pt = &mem[mem_pos ++];
        memset(pt,
    0,sizeof(node));
        
    return pt;
    }


    node 
    * make_tree(int il, int ir,bool flag)
    {
        node 
    * root = new_node();
        root 
    ->= il;
        root 
    ->= ir;
        
    if(flag) {
            root 
    ->count = ir - il+1;
        }

        
    if(il != ir) {
            
    int mid = (il+ir)/2;
            root 
    ->pl = make_tree(il, mid,flag);
            root 
    ->pr = make_tree(mid+1, ir,flag);
        }

        
    return root;
    }


    int find(node * root, int num)
    {
        root 
    ->count --;
        
    if(root ->== root ->r) {
            
    return root ->l;
        }

        
    if(root ->pl ->count > num) {//left
            return find(root ->pl, num);
        }

        
    else {//right
            return find(root ->pr, num - root ->pl ->count);
        }

    }


    void update(node * root, int num)
    {
        root 
    ->count ++;
        
    if(root ->== num && root ->== num) {
            
    return ;
        }

        
    if(root ->pl ->>= num) {//left
            anti += root ->pr ->count;
            update(root 
    ->pl, num);
        }

        
    else {//right
            update(root ->pr, num);
        }

    }


    void cal_P()
    {
        
    int i,j;
        
    for(i=1;i<=n;i++{
            anti 
    = 0;
            update(root, num[i]);
            ans[ num[i] ] 
    = anti;
        }

    }


    void cal_I()
    {
        
    int i,j;
        
    for(i=1;i<=n;i++{
            ans[ find(root, num[i]) ] 
    = i;
        }

    }

  • 相关阅读:
    【POJ2176】Folding
    【NOIP2018】赛道修建
    优雅的文本编辑器——Sublime Text 3的搭建与使用
    【NOIP2010】乌龟棋
    【POJ3585】Accumulation Degree
    【POJ3322】Bloxorz I
    python之路_常用模块介绍
    python之路_正则表达式及re模块
    python之路_内置函数及匿名函数
    python之路_递归函数及实例讲解
  • 原文地址:https://www.cnblogs.com/SQL/p/912730.html
Copyright © 2011-2022 走看看