标题效果:间隔可以改变k少

我的两个天树牌主席。。。

隔断Count On A Tree 之后我一直认为,随着树的主席的变化是分域林木覆盖率可持久段树。

。。

事实上,我是误导。。。

尼可持久化线段树毛关系都木有啊!!

那就是动态的权值线段树啊啊啊啊啊啊啊!!!

好吧这里给不明确主席树的孩纸一些简单介绍:

1.外层树状数组

2.里层线段树

3.线段树动态开节点。仅此而已。和可持久化全然没关系。

4.一个点上的线段树和其它版本号毛关系都没有。

5.正常依照普通的树套树往里插即可了。

7.询问时把log个线段树放在一起跑(不要看我的代码,我的代码写的是log^3的)

8.节点数是nlog^2n

9.看题解要专心。没有第六点你看到了么。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define M 10100
using namespace std;
struct Tree{
Tree *ls,*rs;
int num;
}*tree[M],mempool[2002002],*C=mempool;
int n,m,a[M];
void Insert(Tree*&p,int x,int y,int val)
{
int mid=x+y>>1;
if(!p) p=C++;
p->num++;
if(x==y)
return ;
if(val<=mid)
Insert(p->ls,x,mid,val);
else
Insert(p->rs,mid+1,y,val);
}
void Delete(Tree*&p,int x,int y,int val)
{
int mid=x+y>>1;
p->num--;
if(x==y)
return ;
if(val<=mid)
Delete(p->ls,x,mid,val);
else
Delete(p->rs,mid+1,y,val);
}
int Get_Ans(Tree*p,int x,int y,int val)
{
int mid=x+y>>1;
if(!p)
return 0;
if(!p->num)
return 0;
if(x==y)
return p->num;
if(val<=mid)
return Get_Ans(p->ls,x,mid,val);
else
return (p->ls?p->ls->num:0) + Get_Ans(p->rs,mid+1,y,val);
}
void Update(int x,int y)
{
for(;x<=n;x+=x&-x)
Insert(tree[x],0,1000000000,y);
}
void Downdate(int x,int y)
{
for(;x<=n;x+=x&-x)
Delete(tree[x],0,1000000000,y);
}
int Get_Ans(int x,int y)
{
int re=0;
for(;x;x-=x&-x)
re+=Get_Ans(tree[x],0,1000000000,y);
return re;
}
int Bisection(int x,int y,int k)
{
int l=0,r=1000000000;
while(l+1<r)
{
int mid=l+r>>1;
if( Get_Ans(y,mid) - Get_Ans(x-1,mid) >= k )
r=mid;
else
l=mid;
}
if( Get_Ans(y,l) - Get_Ans(x-1,l) >= k )
return l;
return r;
}
int main()
{
int i,x,y,k;
char p[10];
cin>>n>>m;
for(i=1;i<=n;i++)
scanf("%d",&a[i]),Update(i,a[i]);
for(i=1;i<=m;i++)
{
scanf("%s",p);
if(p[0]=='Q')
scanf("%d%d%d",&x,&y,&k),printf("%d\n", Bisection(x,y,k) );
else
scanf("%d%d",&x,&y),Downdate(x,a[x]),a[x]=y,Update(x,a[x]);
}
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

BZOJ 1901 Dynamic Rankings 树董事长的更多相关文章

  1. BZOJ.1901.Dynamic Rankings(树状数组套主席树(动态主席树))

    题目链接 BZOJ 洛谷 区间第k小,我们可以想到主席树.然而这是静态的,怎么支持修改? 静态的主席树是利用前缀和+差分来求解的,那么对于每个位置上的每棵树看做一个点,拿树状数组更新. 还是树状数组的 ...

  2. [BZOJ 1901] Dynamic Rankings 【树状数组套线段树 || 线段树套线段树】

    题目链接:BZOJ - 1901 题目分析 树状数组套线段树或线段树套线段树都可以解决这道题. 第一层是区间,第二层是权值. 空间复杂度和时间复杂度均为 O(n log^2 n). 线段树比树状数组麻 ...

  3. bzoj 1901 Dynamic Rankings (树状数组套线段树)

    1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec  Memory Limit: 128 MB Description 给定一个含有n个数的序列a[1] ...

  4. [BZOJ 1901] Dynamic Rankings

    Link: BZOJ 1901 传送门 Solution: 带修改主席树的模板题 对于静态区间第$k$大直接上主席树就行了 但加上修改后会发现修改时复杂度不满足要求了: 去掉/增加第$i$位上的值时要 ...

  5. BZOJ.1901.Dynamic Rankings(整体二分)

    题目链接 BZOJ 洛谷 (以下是口胡) 对于多组的询问.修改,我们可以发现: 假设有对p1,p2,p3...的询问,在这之前有对p0的修改(比如+1),且p0<=p1,p2,p3...,那么我 ...

  6. BZOJ.1901.Dynamic Rankings(线段树套平衡树 Splay)

    题目链接or Here 题意:n个数,有两个操作:1.修改某个数为v:2.询问一段区间第k小的数 如果没有修改,则可以用线段树,每个节点P[a,b]存储大小为b-a+1的数组,代表其中的数 同时,这个 ...

  7. BZOJ 1901 Dynamic Rankings (整体二分+树状数组)

    题目大意:略 洛谷传送门 这道题在洛谷上数据比较强 貌似这个题比较常见的写法是树状数组套主席树,动态修改 我写的是整体二分 一开始的序列全都视为插入 对于修改操作,把它拆分成插入和删除两个操作 像$C ...

  8. bzoj 1901: Zju2112 Dynamic Rankings(树套树)

    1901: Zju2112 Dynamic Rankings 经典的带改动求区间第k小值问题 树套树模板,我是用的线段树套splay实现的,并且用的数组模拟的,所以可能空间略大,bzoj过了,zoj过 ...

  9. Bzoj 1901: Zju2112 Dynamic Rankings 树套树,线段树,平衡树,Treap

    1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 6471  Solved: 2697[Su ...

随机推荐

  1. COLORREF和COLOR和RGB的总结

    一.COLORREF与RGB的相互转化 RGB(r,g,b)是一个宏 实际上它做得事是((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((D ...

  2. SWT的GridLayout一些参数解释

    1. GridLayout类的说明GridLayout在包org.eclipse.swt.layout中,各参数意义如下:1. numColumns指定布局器中的列数2. horizontalSpac ...

  3. SDL2源码分析8:视频显示总结

    ===================================================== SDL源码分析系列文章列表: SDL2源码分析1:初始化(SDL_Init()) SDL2源 ...

  4. 国庆去学校的国际象棋(Latex)

    国庆节去学棋与朋友. 看国外的网站更有趣的事情. 很快打下来. 首先效应: 嘿嘿  代码来了哟: \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc ...

  5. MySQL的create table as 与 like区别(转)

    对于mysql的复制相同表结构方法,有create table as 和create table like 两种,区别是什么呢? create table t2 as select * from t1 ...

  6. 菜鸟学习spring IOC有感

     一.spring IOC思想引入 事实上对于刚開始学习的人来说,在学习IOC的时候确实有点困难,主要是掌握其思想方面存在一丢丢的障碍,可是假设可以跨过这个障碍,则可以高速掌握当中的思想了.单从字 ...

  7. Android他们控制的定义(一)

    培养自己的控制步骤定义: 1.要理解View作品  2. 分享到继承View子类 3. 要定义自己的View类添加属性  4. 绘制控件  5. 响应用户消息  6 .自己定义回调函数  一.View ...

  8. [TroubleShooting]&#39;trn\bak&#39; is incorrectly formed. SQL Server cannot process this media family.

     SQL Server online consultants came across an interesting scenario where one of our client was una ...

  9. VMware vSphere 服务器虚拟化之十七 桌面虚拟化之安装View链接服务器

    VMware vSphere 服务器虚拟化之十七 桌面虚拟化之安装View链接服务器 View链接服务器(View Connection Server)是Vmware Horizon View桌面虚拟 ...

  10. ROW_NUMBER() OVER 排序函数的基本用法

    ROW_NUMBER() OVER 排序函数 select ROW_NUMBER() OVER (PARTITION BY guide_id ORDER BY pic_sort) as rowid,p ...