资源简介
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) ;
- 上一篇:c++ 文本格式化
- 下一篇:pic单片机读写ft245芯片
评论
共有 条评论