博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj3110: [Zjoi2013]K大数查询
阅读量:5091 次
发布时间:2019-06-13

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

整体二分加深理解~

#include
#include
#include
#include
#include
#include
using namespace std;typedef long long LL;int n;struct trnode{ int l,r,lc,rc;LL c,lazy;}tr[110000];int trlen;void bt(int l,int r){ int now=++trlen; tr[now].l=l;tr[now].r=r; tr[now].lc=tr[now].rc=-1; tr[now].c=0;tr[now].lazy=0; if(l
r)return 0; if(tr[now].l==l&&tr[now].r==r)return tr[now].c; int mid=(tr[now].l+tr[now].r)/2; int lc=tr[now].lc,rc=tr[now].rc; if(tr[now].lazy!=0) { tr[lc].c+=(tr[lc].r-tr[lc].l+1)*tr[now].lazy; tr[rc].c+=(tr[rc].r-tr[rc].l+1)*tr[now].lazy; tr[lc].lazy+=tr[now].lazy; tr[rc].lazy+=tr[now].lazy; tr[now].lazy=0; } if(r<=mid) return getsum(lc,l,r); else if(mid+1<=l)return getsum(rc,l,r); else return getsum(lc,l,mid)+getsum(rc,mid+1,r);}//------------seg_tree----------------------struct node{ int t,x,y,k;}q[51000],lq[51000],rq[51000];int as[51000];void solve(LL l,LL r,int st,int ed){ if(st>ed)return ; if(l==r) { for(int i=st;i<=ed;i++) if(q[i].t>0)as[q[i].t]=l; return ; } LL mid=(l+r)/2,lt=0,rt=0; for(int i=st;i<=ed;i++) { if(q[i].t==0) { if(q[i].k<=mid)lq[++lt]=q[i]; else { change(1,q[i].x,q[i].y,1); rq[++rt]=q[i]; } } else { LL d=getsum(1,q[i].x,n)-getsum(1,q[i].y+1,n); if(d
=st;i--) if(q[i].t==0&&q[i].k>mid)change(1,q[i].x,q[i].y,-1); for(int i=1;i<=lt;i++)q[st+i-1]=lq[i]; for(int i=1;i<=rt;i++)q[st+lt+i-1]=rq[i]; solve(l,mid,st,st+lt-1); solve(mid+1,r,st+lt,ed);}char ss[10];int main(){ int Q,m=0,op; scanf("%d%d",&n,&Q); for(int i=1;i<=Q;i++) { scanf("%d%d%d%d",&op,&q[i].x,&q[i].y,&q[i].k); if(op==1)q[i].t=0; else q[i].t=++m; } trlen=0;bt(1,n); solve(0,(1LL<<33),1,Q); for(int i=1;i<=m;i++)printf("%d\n",as[i]); return 0;}

 

转载于:https://www.cnblogs.com/AKCqhzdy/p/9441016.html

你可能感兴趣的文章
标准C++输入输出和字符串类学习小程序集锦
查看>>
SQL语句之 SOS定位救师徒
查看>>
js获取IE版本,while代码很特别
查看>>
字符串操作、文件操作,英文词频统计预处理
查看>>
arrayfun用法(转)
查看>>
HDU 2222 Keywords Search [AC自动机]
查看>>
TODO
查看>>
android中的ellipsize设置(省略号的问题)
查看>>
JDBC连接mysql
查看>>
linux shell重定向总结
查看>>
iOS实用小工具
查看>>
单链表
查看>>
man/info
查看>>
1001. A+B Format 字符串
查看>>
View的绘制过程和原理(结合android开发艺术探索)
查看>>
分布式锁机制
查看>>
jQuery选择器大全整理
查看>>
adb命令
查看>>
deeplearning----利用逻辑回归分类MINIST数字
查看>>
JavaWeb---总结(六)Servlet开发(一)
查看>>