题目大意:给你一个序列,求某个区间出现次数大于一半的数是什么

主席树裸题,刷刷水题提升自信= =

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define ll long long
#define il inline
#define N 500100
using namespace std;
//re
int n,m,tot;
int a[N],root[N];
struct Seg{
int ls,rs,sum;
}seg[N*]; int gc()
{
int rett=,fh=;char p=getchar();
while(p<''||p>''){if(p=='-')fh=-;p=getchar();}
while(p>=''&&p<=''){rett=(rett<<)+(rett<<)+p-'';p=getchar();}
return rett*fh;
}
il void pushup(int rt){seg[rt].sum=seg[seg[rt].ls].sum+seg[seg[rt].rs].sum;}
void build(int l,int r,int rt)
{
if(l==r) return;
int mid=(l+r)>>;
seg[rt].ls=++tot,build(l,mid,tot);
seg[rt].rs=++tot,build(mid+,r,tot);
}
void update(int x,int l,int r,int rt1,int rt2,int val)
{
if(l==r) {seg[rt2].sum+=val;return;}
int mid=(l+r)>>;
if(x<=mid){
if(!seg[rt2].ls||seg[rt2].ls==seg[rt1].ls){
seg[rt2].ls=++tot,seg[seg[rt2].ls].sum=seg[seg[rt1].ls].sum;
if(!seg[rt2].rs) seg[rt2].rs=seg[rt1].rs;
}update(x,l,mid,seg[rt1].ls,seg[rt2].ls,val);
}else{
if(!seg[rt2].rs||seg[rt2].rs==seg[rt1].rs){
seg[rt2].rs=++tot,seg[seg[rt2].rs].sum=seg[seg[rt1].rs].sum;
if(!seg[rt2].ls) seg[rt2].ls=seg[rt1].ls;
}update(x,mid+,r,seg[rt1].rs,seg[rt2].rs,val);
}pushup(rt2);
}
int query(int l,int r,int rt1,int rt2,int len)
{
if(l==r) return l;
int mid=(l+r)>>;
if(seg[seg[rt2].ls].sum-seg[seg[rt1].ls].sum>=len)
return query(l,mid,seg[rt1].ls,seg[rt2].ls,len);
if(seg[seg[rt2].rs].sum-seg[seg[rt1].rs].sum>=len)
return query(mid+,r,seg[rt1].rs,seg[rt2].rs,len);
return ;
} int main()
{
//freopen("data.in","r",stdin);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) a[i]=gc();
root[]=++tot,build(,n,tot);
for(int i=;i<=n;i++)
root[i]=++tot,update(a[i],,n,root[i-],root[i],);
int x,y;
while(m--)
{
x=gc(),y=gc();
printf("%d\n",query(,n,root[x-],root[y],(y-x+)/+));
}
return ;
}

BZOJ 3524 [POI2014]KUR-Couriers (主席树)的更多相关文章

  1. [BZOJ 2989]数列(二进制分组+主席树)

    [BZOJ 2989]数列(二进制分组+主席树) 题面 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[ ...

  2. BZOJ 3524: [Poi2014]Couriers [主席树]

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1892  Solved: 683[Submit][St ...

  3. 主席树||可持久化线段树||BZOJ 3524: [Poi2014]Couriers||BZOJ 2223: [Coci 2009]PATULJCI||Luogu P3567 [POI2014]KUR-Couriers

    题目:[POI2014]KUR-Couriers 题解: 要求出现次数大于(R-L+1)/2的数,这样的数最多只有一个.我们对序列做主席树,每个节点记录出现的次数和(sum).(这里忽略版本差值问题) ...

  4. BZOJ 3524 Couriers | 主席树

    BZOJ 3524 Couriers 题意 求一个区间内出现超过区间长度的一半的数,如果没有则输出0. 题解 我可能太菜了吧--这道题愣是没想出来-- 维护权值主席树,记录每个数都出现过多少次: 查询 ...

  5. 3524: [Poi2014]Couriers -- 主席树

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MB Description 给一个长度为n的序列a.1≤a[i]≤n.m组 ...

  6. [BZOJ2223][BZOJ3524][Poi2014]Couriers 主席树

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2436  Solved: 960[Submit][St ...

  7. 【BZOJ3524/2223】[Poi2014]Couriers 主席树

    [BZOJ3524][Poi2014]Couriers Description 给一个长度为n的序列a.1≤a[i]≤n.m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大 ...

  8. BZOJ 3524: [Poi2014]Couriers

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1905  Solved: 691[Submit][St ...

  9. BZOJ 3524 [Poi2014]Couriers(二分+蒙特卡罗)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3524 [题目大意] 给一个长度为n的序列a.1≤a[i]≤n. m组询问,每次询问一个 ...

随机推荐

  1. P1892 团伙

    题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两个强盗是同一团伙的 ...

  2. file_get_contens POST传值

    <?php echo "<pre>"; print_r($_POST); print_r($_COOKIE); ?> 本文讲述的只是http post请求的 ...

  3. python 获取excel数据 自动登陆

    import xlrdimport timeimport unittestfrom selenium import webdriver class u8819(unittest.TestCase): ...

  4. maven项目发布后访问jsp页面报错

    type Exception report message java.lang.NullPointerException description The server encountered an i ...

  5. 【UOJ#50】【UR #3】链式反应(分治FFT,动态规划)

    [UOJ#50][UR #3]链式反应(分治FFT,动态规划) 题面 UOJ 题解 首先把题目意思捋一捋,大概就是有\(n\)个节点的一棵树,父亲的编号大于儿子. 满足一个点的儿子有\(2+c\)个, ...

  6. java spring中对properties属性文件加密及其解密

    http://blog.csdn.net/yaerfeng/article/details/26561791

  7. Grace Hopper 葛丽丝 霍普

    Grace Murray Hopper(1906-1992), COBOL之母, Debug之母, A ship in port is safe, but that is not what ships ...

  8. 【java项目实战】dom4j解析xml文件,连接Oracle数据库

    简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...

  9. HDU 2732 Leapin&#39; Lizards(拆点+最大流)

    HDU 2732 Leapin' Lizards 题目链接 题意:有一些蜥蜴在一个迷宫里面,有一个跳跃力表示能跳到多远的柱子,然后每根柱子最多被跳一定次数,求这些蜥蜴还有多少是不管怎样都逃不出来的. ...

  10. cpu真实占用率检測工具

     windows任务管理器所示CPU占用,一直在不断的变动跳跃 ,并不能反应真实的平均CPU占用率.迅雷下载工具也是一样 ,有时这些知名软件,反倒是没有做的这么人性化,细致.或 许就是不想让人知道 ...