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

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

 #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. reMarkable安装教程

    PS :每次都下一遍安装包挺无奈的...... 系统版本 :Ubuntu 16.04 安装包 :remarkable_1.87_all.deb 链接 Here!-> reMarkable 安装步 ...

  2. 使用Ansible安装部署nginx+php+mysql之配置iptables防火墙(0)

    前提: 1.已配置好hosts文件且免密码登录 2.需要的yaml文件已上传到主控端 一.使用Ansible配置iptables 1.iptables.yaml文件 --- - hosts: clon ...

  3. ASP.NET MVC5 :Attribute路由使用详解

    1.什么是Attribute路由?怎么样启用Attribute路由? 微软在 ASP.NET MVC5 中引入了一种新型路由:Attribute路由,顾名思义,Attribute路由是通过Attrib ...

  4. CSS中选择器优先级的权重计算

    CSS中选择器优先级的权重计算 先看一段代码,如下: a{ color: red; } #box a{ color: green; } [class="box"] a{ color ...

  5. Anaconda安装tensorflow遇到的问题(转)

    tensorflow安装教程 1.找不到Anaconda Prompt 其他教程中说AnacondaPrompt在安装的Anaconda文件夹下面(如D:/Anaconda),但是我在安装中没有找到, ...

  6. jedis 连接 redis

    一.连接单机版的 redis /** * 直接连接 redis * @throws Exception */ @Test public void test1() throws Exception { ...

  7. Java并发之线程间的同步协作与通信协作

    1,Monitor监视器与syncrhoized实现原理 1.1:Monitor Monitor是一个同步工具,相当于操作系统中的互斥量(mutex),即值为1的信号量. 它内置与每一个Object对 ...

  8. Using index, using temporary, using filesort - how to fix this?

    解释一: These are the following conditions under which temporary tables are created. UNION queries use ...

  9. chmod和chown命令具体使用方法

    Linux下数字表示文件的操作权限(777,755,..) Linux下.查看某路径下用(ls -l)查看全部文件的具体属性列表时.会看到文件的操作权限.类似"drwxr-xr-x" ...

  10. OC-JS交互(WebViewJavascriptBridge使用说明)

    首先确保一份已经配好功能的html文件. 1.初始化一个webview(viewdidload) UIWebView* webView = [[UIWebView alloc] initWithFra ...