正解:整体二分

解题报告:

传送门$w$

阿查询带修区间第$k$小不显然整体二分板子呗,,,

就考虑先按时间戳排序(,,,其实并不需要读入的时候就按着时间戳排的鸭$QwQ$

每次二分出$mid$先把所有修改值小于等于$mid$的计入进去就成

查询的时候用值域线段树就成.

其实感觉和板子差不多,,,?而且修改还从区间变成单点了$QwQ$

$over$

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define gc getchar()
#define ri register int
#define rb register bool
#define rc register char
#define lowbit(x) (x&(-x))
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i) const int N=+,inf=1e9;
int n,m,a[N],nod_cnt,tr[N<<];
struct node{int l,r,K,id,as;}nod[N<<],tmp1[N<<],tmp2[N<<]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il bool cmp(node gd,node gs){return gd.id<gs.id;}
il bool rd(){rc ch=gc;while(ch!='Q' && ch!='C')ch=gc;return ch=='Q';}
il void modify(ri x,ri val){while(x<=n)tr[x]+=val,x+=lowbit(x);}
il int query(ri x){ri ret=;while(x)ret+=tr[x],x-=lowbit(x);return ret;}
void solv(ri l,ri r,ri dat_l,ri dat_r)
{
if(l>r)return;
if(dat_l==dat_r){rp(i,l,r)nod[i].as=dat_l;return;}
ri mid=(dat_l+dat_r)>>,t1=,t2=;
rp(i,l,r)
if(nod[i].l>n)if(nod[i].K<=mid)tmp1[++t1]=nod[i],modify(nod[i].r,nod[i].l-n-);else tmp2[++t2]=nod[i];
else
{
ri d=query(nod[i].r)-query(nod[i].l-);
if(d>=nod[i].K)tmp1[++t1]=nod[i];else nod[i].K-=d,tmp2[++t2]=nod[i];
}
rp(i,l,r)if(nod[i].l>n && nod[i].K<=mid)modify(nod[i].r,-nod[i].l+n+);
rp(i,,t1)nod[i+l-]=tmp1[i];rp(i,t1+,t1+t2)nod[i+l-]=tmp2[i-t1];
solv(l,l+t1-,dat_l,mid);solv(l+t1,r,mid+,dat_r);
} int main()
{
//freopen("2617.in","r",stdin);freopen("2617.out","w",stdout);
n=read();m=read();rp(i,,n)nod[++nod_cnt]=(node){n+,i,a[i]=read(),};
rp(i,,m)
{
rb op=rd();ri pos=read();
if(op)nod[++nod_cnt]=(node){pos,read(),read(),nod_cnt};
else{nod[++nod_cnt]=(node){n+,pos,a[pos],};a[pos]=read();nod[++nod_cnt]=(node){n+,pos,a[pos],};}
}
solv(,nod_cnt,,inf);
sort(nod+,nod+nod_cnt+,cmp);rp(i,,nod_cnt)if(nod[i].l<=n)printf("%d\n",nod[i].as);
return ;
}

谁能想到我一个整体二分板子写了差不多两个小时呢,,,$QAQ$

洛谷$P2617\ Dynamic\ Rankings$ 整体二分的更多相关文章

  1. 洛谷P2617 Dynamic Rankings

    带修主席树模板题 主席树的单点修改就是把前缀和(大概)的形式改成用树状数组维护,每个树状数组的元素都套了一个主席树(相当于每个数组的元素root[i]都是主席树,且这个主席树维护了(i - lowbi ...

  2. 洛谷P2617 Dynamic Rankings (主席树)

    洛谷P2617 Dynamic Rankings 题目描述 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a ...

  3. 【学习笔鸡】整体二分(P2617 Dynamic Rankings)

    [学习笔鸡]整体二分(P2617 Dynamic Rankings) 可以解决一些需要树套树才能解决的问题,但要求询问可以离线. 首先要找到一个具有可二分性的东西,比如区间\(k\)大,就很具有二分性 ...

  4. 2018.07.01洛谷P2617 Dynamic Rankings(带修主席树)

    P2617 Dynamic Rankings 题目描述 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i ...

  5. 洛谷 P2617 Dynamic Rankings 解题报告

    P2617 Dynamic Rankings 题目描述 给定一个含有\(n\)个数的序列\(a[1],a[2],a[3],\dots,a[n]\),程序必须回答这样的询问:对于给定的\(i,j,k\) ...

  6. [bzoj1901][zoj2112][Dynamic Rankings] (整体二分+树状数组 or 动态开点线段树 or 主席树)

    Dynamic Rankings Time Limit: 10 Seconds      Memory Limit: 32768 KB The Company Dynamic Rankings has ...

  7. 洛咕P3250 [HNOI2016]网络 整体二分

    这题太神仙了必须写博客... 显然可以想到二分答案.二分一个答案mid,如果所有长度\(\geq mid\)的路径都过x,那么答案一定\(<mid\),否则答案\(\geq mid\). 那么就 ...

  8. P2617 Dynamic Rankings

    题目描述 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤ ...

  9. 【BZOJ1901】Dynamic Rankings [整体二分]

    Dynamic Rankings Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 给定一个含 ...

随机推荐

  1. H3C 电路交换连接模型

  2. oracle强制索引失效

    如果两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录数量少) . 举例: SELECT ENAME FROM EMP WHERE EMPNO = 79 ...

  3. tp3.2.3 解决http://lx.com/后必须加index.php才能访问的问题,配置文件中忘了加index index.php index.html 等默认文件

    server { listen 80; server_name lx.com; root "D:\phpstudy\PHPTutorial\WWW\liuxue"; locatio ...

  4. SQL server无法绑定由多个部分绑定的标示符

    原因https://blog.csdn.net/wolfalcon/article/details/54578215给了我启发,原来有犯错在insert和update的使用上了对于已存在的表(表中有字 ...

  5. P1112 区间连续段

    题目描述 给你一个长度为n的数组 \(a_1, a_2, \dots a_n\) . 一开始这n个元素都为0. 然后有m次操作,每次操作有两种操作类型: update x y a:将区间 \([x,y ...

  6. Vue 动画的钩子函数

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. vue在渲染之前拿到数据操作.......vue数据获取

    异步请求数据,但是生命周期函数也是异步的,怎么才能保证渲染之前就能拿到数据呢? 官方给了两种方案, 我们可以在异步获取数据的时候加上一个loading表示现在在获取数据..... 由于ajax是异步操 ...

  8. python基础六之编码

    python中编码的特点: 1,各个编码之间的二进制是不能互相识别的,会产生乱码 2,文件的储存和传输是不能用Unicode的 python3的编码 在python3中字符串在内存中是用Unicode ...

  9. 【9001】Internet消息发布

    Time Limit: 1 second Memory Limit: 256 MB 问题描述 设Internet上有N个站点,通常从一个站点发送消息给其他N-1个站点,需依次发送N-1次.这样从一个站 ...

  10. H3C 802.1X典型配置举例