資源簡介
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芯片
評論
共有 條評論