#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=2e5+10;
int op[maxn],d[maxn],n;
int xx[maxn],num;
int ans[maxn];
struct tree
{
int a[maxn<<2],sumn[maxn<<2];
void update(int x,int shu,int l,int r,int p)
{
if( l==r )
{
a[p]+=shu;//储存节点数量
sumn[p]+=shu*xx[l];//储存节点权值
return;
}
int mid = (l+r)/2;
if( x<=mid ) update(x,shu,l,mid,p<<1);
if( x>mid ) update(x,shu,mid+1,r,p<<1|1);
a[p]=a[p<<1]+a[p<<1|1];
sumn[p]=sumn[p<<1]+sumn[p<<1|1];
}
int ask(int k,int l,int r,int p)//后k大
{
if( k<=0 ) return 0;
if( a[p]<=k ) return sumn[p];
if( l==r ) return k*xx[l];
int mid=l+r>>1;
int ans=0;
if( a[p<<1|1]>=k ) ans=ask(k,mid+1,r,p<<1|1);
else
{
k-=a[p<<1|1];
ans=sumn[p<<1|1]+ask(k,l,mid,p<<1);
}
return ans;
}
int askmi(int l,int r,int p)
{
if( l==r ) return l;
int mid=l+r>>1;
if( a[p<<1] ) return askmi(l,mid,p<<1);
else return askmi(mid+1,r,p<<1|1);
}
}T,TT;
权值线段树[模板]
原创
©著作权归作者所有:来自51CTO博客作者Issue!!!的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
主席树or权值线段树模板
#include <cstdio>#include <vector>#include <queue>#inclulude <io...
#define #include 线段树 -
权值线段树 详解+操作模板(c++)
权值线段树详解+模板代码+例题
c++ 算法 数据结构 权值线段树 子树 -
hdu 5249(权值线段树)
一道权值线段树的题:也不算是板子题,变相求第k大题目链
#include i++ 离散化 -
数据结构 线段树--权值线段树 详解
一、权值线段树 简介1.线段树线段树是一种用于维护区间信息的高效数据结构,可以在 O(logN)O(\log N)O(logN) 的时间复杂
算法 数据结构 acm竞赛 权值线段树 线段树 -
BZOJ4627 权值线段树
BZOJ4627 权值线段树 。在这里,一盘盘寿...
#include #define i++