• 大小: 2.43KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-02-01
  • 标签: 主席树  

资源简介

C 实现主席树

资源截图

代码片段和文件信息

class PTree
{
#define INF 0x3f3f3f3f
#define MAXN 200005
#define N MAXN*40
public:
struct Node {int LR;int64_t data;}T[N] ;
int root[MAXN+5]totn;
int64_t max_valmin_val ;
PTree(int _n=MAXNint64_t min_val = 0int64_t max_val=INF) {clear(_nmin_valmax_val);}
inline void clear(int _n=MAXNint64_t _min_val=0int64_t _max_val=INF)
{
tot=0;n=_n;min_val = _min_val;max_val=_max_val ;
T[0] = {000} ; for(int i(0);i<=n;++i) root[i] = 0 ;
}

inline int newNode()
         {T[++tot] = {000} ; return tot ;}

void insert(int rlastint& rnowint64_t lint64_t rint64_t pint val = 1)
{
rnow = newNode();T[rnow]=T[rlast];T[rnow].data += val ;
if(l == r) return ;
int64_t mid((l+r)>>1) ;
if(p<=mid) insert(T[rlast].LT[rnow].Llmidpval) ;
else insert(T[rlast].RT[rnow].Rmid+1rpval) ;
}

int _Rank(int plint print64_t lint64_t rint64_t val)
{
    int64_t ans(0) ;
    while(l!=r) {
             int64_t mid((l+r)>>1) ;
        

评论

共有 条评论

相关资源