博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【主席树】bzoj3524 [Poi2014]Couriers
阅读量:6153 次
发布时间:2019-06-21

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

删除了作死的建树函数。

#include
using namespace std;#define N 500001struct Node{int v,lc,rc;}T[N*21];int root[N],e;void Insert(int pre,int cur,int p,int l,int r){ if(l==r) { T[cur].v=T[pre].v+1; return; } int m=(l+r>>1); if(p<=m) { T[cur].lc=++e; T[cur].rc=T[pre].rc; Insert(T[pre].lc,T[cur].lc,p,l,m); } else { T[cur].rc=++e; T[cur].lc=T[pre].lc; Insert(T[pre].rc,T[cur].rc,p,m+1,r); } T[cur].v=T[T[cur].lc].v+T[T[cur].rc].v;}int Goal;int Query(int L,int R,int l,int r){ if(l==r) return l; int m=(l+r>>1); if(T[T[R].lc].v-T[T[L].lc].v>Goal) return Query(T[L].lc,T[R].lc,l,m); else if(T[T[R].rc].v-T[T[L].rc].v>Goal) return Query(T[L].rc,T[R].rc,m+1,r); return 0;}int n,m;int main(){ int x,y; scanf("%d%d",&n,&m); for(int i=1;i<=n;++i) { scanf("%d",&x); root[i]=++e; Insert(root[i-1],root[i],x,1,n); } for(;m;--m) { scanf("%d%d",&x,&y); Goal=(y-x+1>>1); printf("%d\n",Query(root[x-1],root[y],1,n)); } return 0;}

转载于:https://www.cnblogs.com/autsky-jadek/p/4423092.html

你可能感兴趣的文章
KubeEdge向左,K3S向右
查看>>
DTCC2013:基于网络监听数据库安全审计
查看>>
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>
linux开源万岁
查看>>
linux/CentOS6忘记root密码解决办法
查看>>
25个常用的Linux iptables规则
查看>>
集中管理系统--puppet
查看>>
分布式事务最终一致性常用方案
查看>>
Exchange 2013 PowerShell配置文件
查看>>
JavaAPI详解系列(1):String类(1)
查看>>
HTML条件注释判断IE<!--[if IE]><!--[if lt IE 9]>
查看>>
发布和逸出-构造过程中使this引用逸出
查看>>
Oracle执行计划发生过变化的SQL语句脚本
查看>>
使用SanLock建立简单的HA服务
查看>>
发现一个叫阿尔法城的小站(以后此贴为我记录日常常用网址的帖子了)
查看>>
Subversion使用Redmine帐户验证简单应用、高级应用以及优化
查看>>
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>