2019牛客国庆集训派对day2 C.Just h-index(主席树)
发布日期:2021-06-30 10:32:58 浏览次数:2 分类:技术文章

本文共 1196 字,大约阅读时间需要 3 分钟。

维护 n n n [ 1 , i ] [1,i] [1,i]的权值线段树

然后对于每个询问 [ l , r ] [l,r] [l,r],可以利用主席树做差得到当前区间的值

又因为答案具有单调性,所以可以在树上二分得到解

#include 
using namespace std;#define mid (l+r>>1)const int inf = 1e9;const int maxn = 1e6+10;const int N = maxn*40;int n,m,q,a[maxn];int sum[N],ls[N],rs[N],id,rt[N];void update(int &root,int pre,int l,int r,int val){
root = ++id; ls[root] = ls[pre], rs[root] = rs[pre]; //sum[root] = sum[pre]; if( l==r ) {
sum[root] = sum[pre]+1; return; } if( val<=mid ) update( ls[root],ls[pre],l,mid,val ); else update( rs[root],rs[pre],mid+1,r,val ); sum[root] = sum[ls[root]] + sum[rs[root]];}int ask(int &root,int pre,int l,int r,int val){
int x = sum[rs[root]] - sum[rs[pre]];//右子树的数量 if( l==r ) return l; if( val+x>=mid+1 ) return ask( rs[root],rs[pre],mid+1,r,val ); else return ask( ls[root],ls[pre],l,mid,val+x);}int main(){
while( cin >> n >> q ) {
for(int i=1;i<=n;i++) cin >> a[i]; for(int i=1;i<=n;i++)//维护一颗[1,i]的线段树 update( rt[i],rt[i-1],0,inf,a[i] ); while( q-- ) {
int l,r; scanf("%d%d",&l,&r); printf("%d\n",ask( rt[r],rt[l-1],0,inf,0 ) ); } for(int i=0;i<=id;i++) ls[i] = rs[i] = rt[i] = sum[i] = 0; id = 0; }}

转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/116501090 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:湘潭G.String Transformation(思维)
下一篇:2019牛客国庆集训派对day1 D.Modulo Nine(巧妙的dp)

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月22日 20时25分31秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【NLP学习笔记】One-hot encoding:独热编码 2019-04-30
【工具使用】CSDN编辑器markdown字体、颜色与字号的设置 2019-04-30
【NLP学习笔记】词共现矩阵 2019-04-30
【NLP学习笔记】NLP基础知识框架图 2019-04-30
【深度学习笔记】卷积的输入输出的通道、维度或尺寸变化过程 2019-04-30
【NLP学习笔记】训练集、验证集和测试集的概念及划分 2019-04-30
【NLP学习笔记】conda换源 2019-04-30
【深度学习笔记】常见的图像增强方法:scaling、rotating、flipping、random cropping 2019-04-30
【深度学习笔记】标准卷积 2019-04-30
【深度学习笔记】组卷积 2019-04-30
【深度学习笔记】循环神经网络和递归神经网络区别 2019-04-30
【学习笔记】英文科技论文常见英语句式积累 2019-04-30
【深度学习笔记】PixelShuffle 2019-04-30
【python3学习笔记】斜杠和双斜杠运算符的区别 2019-04-30
【深度学习笔记】torch.nn.Sequential(* args) 与 torch.nn.Module 2019-04-30
【深度学习笔记】用torch.nn.Sequential()搭建神经网络模型 2019-04-30
【深度学习笔记】用torch.nn.ModuleList搭建神经网络 2019-04-30
【解决错误】AttributeError: module ‘scipy.misc‘ has no attribute ‘imread‘ 2019-04-30
【解决错误】复现RCAN的时候遇到了ImportError: cannot import name ‘_update_worker_pids’ from ‘torch._C’ 2019-04-30
【解决错误】ModuleNotFoundError: No module named ‘skimage‘ 2019-04-30