传送门

简单主席树啊。

但听说有随机算法可以秒掉%%%(本蒟蒻并不会)

直接维护值域内所有数的出现次数之和。

当这个值不大于区间总长度的一半时显然不存在合法的数。

这样在主席树上二分查值就行了。

代码:

#include<bits/stdc++.h>
#define N 500005
using namespace std;
inline int read(){
    int ans=0;
    char ch=getchar();
    while(!isdigit(ch))ch=getchar();
    while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
    return ans;
}
int n,m,tot=0,tmp,son[N*20][2],siz[N*20],rt[N],ql,qr;
inline int max(int a,int b){return a>b?a:b;}
inline void insert(int&p,int las,int l,int r,int v){
    son[p=++tot][0]=son[las][0],son[p][1]=son[las][1];
    if(l==r){siz[p]=siz[las]+1;return;}
    int mid=l+r>>1;
    if(v<=mid)insert(son[p][0],son[las][0],l,mid,v);
    else insert(son[p][1],son[las][1],mid+1,r,v);
    siz[p]=siz[son[p][0]]+siz[son[p][1]];
}
inline int query(int a,int b,int l,int r){
    if(l==r)return l;
    int mid=l+r>>1;
    if(2*(siz[son[b][0]]-siz[son[a][0]])>qr-ql+1)return query(son[a][0],son[b][0],l,mid);
    if(2*(siz[son[b][1]]-siz[son[a][1]])>qr-ql+1)return query(son[a][1],son[b][1],mid+1,r);
    return 0;
}
int main(){
    n=read(),m=read();
    for(int i=1;i<=n;++i)insert(rt[i],rt[i-1],1,n,(tmp=read()));
    while(m--){
        ql=read(),qr=read();
        printf("%d\n",query(rt[ql-1],rt[qr],1,n));
    }
    return 0;
}

2018.09.14 洛谷P3567 [POI2014]KUR-Couriers(主席树)的更多相关文章

  1. 2018.09.14 洛谷P3931 SAC E#1 - 一道难题 Tree(树形dp)

    传送门 简单dp题. f[i]表示以i为根的子树被割掉的最小值. 那么有: f[i]=min(∑vf[v],dist(i,fa))" role="presentation" ...

  2. 2018.07.07 洛谷 P3939 数颜色(主席树)

    P3939 数颜色 题目背景 大样例下发链接:http://pan.baidu.com/s/1c0LbQ2 密码:jigg 题目描述 小 C 的兔子不是雪白的,而是五彩缤纷的.每只兔子都有一种颜色,不 ...

  3. 洛谷P2617 Dynamic Ranking(主席树,树套树,树状数组)

    洛谷题目传送门 YCB巨佬对此题有详细的讲解.%YCB%请点这里 思路分析 不能套用静态主席树的方法了.因为的\(N\)个线段树相互纠缠,一旦改了一个点,整个主席树统统都要改一遍...... 话说我真 ...

  4. 洛谷P3168 [CQOI2015]任务查询系统 [主席树,差分]

    题目传送门 任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任 ...

  5. 2018.09.26洛谷P1084 疫情控制(二分+倍增)

    传送门 好题啊. 题目要求的最大值最小,看到这里自然想到要二分答案. 关键在于怎么检验. 显然对于每个点向根走比向叶节点更优. 因此我们二分答案之后,用倍增将每个点都向上跳到跳不动为止. 这时我们ch ...

  6. 2018.09.26洛谷P3957 跳房子(二分+单调队列优化dp)

    传送门 表示去年考普及组的时候失了智,现在看来并不是很难啊. 直接二分答案然后单调队列优化dp检验就行了. 注意入队和出队的条件. 代码: #include<bits/stdc++.h> ...

  7. 2018.09.26 洛谷P2464 [SDOI2008]郁闷的小J(map+vector)

    传送门 本来出题人出出来想考数据结构的. 但是我们拥有map+vector/set这样优秀的STL,因此直接用map离散化,vector存下标在里面二分找答案就行了. 代码: #include< ...

  8. 洛谷P3567[POI2014]KUR-Couriers(主席树+二分)

    题意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半 题解: 最近比赛太多,都没时间切水题了,刚好日推了道主席树裸题,就写了一下 然后 WA80 WA80 WA0 WA90 WA80 ?? ...

  9. [洛谷P3567][POI2014]KUR-Couriers

    题目大意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半.有,输出这个数,否则输出$0$ 题解:主席树,查询区间第$\bigg\lfloor\dfrac{len+1}{2}\bigg\rf ...

随机推荐

  1. delphi 编译生成ipa文件 adhoc步骤

    找IPA文件 开发模式ipa文件和发布模式ipa文件,路径不同. http://www.itnose.net/detail/6101808.html 一.开发模式Development 不需要真机,可 ...

  2. Mysql canal 监控数据变化

    https://www.jianshu.com/p/6299048fad66 阿里巴巴github地址 https://github.com/alibaba/canal/wiki/QuickStart

  3. chattr与lsattr命令

    这两个命令是用来查看和改变文件.目录属性的,与chmod这个命令相比,chmod只是改变文件的读写.执行权限,更底层的属性控制是由chattr来改变的. chattr命令的用法:chattr [ -R ...

  4. JAVA学习(七)__Spring的@Autowired注入规则

    @Autowired 默认是按照byType进行注入的,但是当byType方式找到了多个符合的bean,又是怎么处理的? 经过一些代码的测试,我发现,Autowired默认先按byType,如果发现找 ...

  5. C++ 0x 使用condition_variable 与 Mutex 同步两个线程

    Mutex : 锁   同一时间只允许一个线程访问其代码内容 拟人 : 就是一把锁而已,可以lock unlock, 谁都可以拿到锁,打开门进屋,但进去后,就会把门锁上(lock) 别人想进就得等他出 ...

  6. hive sql split 分隔符

    Hive字符串分割函数 split(str, regex) - Splits str around occurances that match regexTime taken: 0.769 secon ...

  7. centos7 端口转发

    firewall-cmd --add-masquerade   firewall-cmd --add-forward-port=port=3001:proto=tcp:toaddr=172.17.18 ...

  8. dhtmlx uploader使用

    前端:{type : "upload", mode : "html4", name : "importFile", inputWidth : ...

  9. jq闭包

     var jy = jQuery.noConflict(); (function($){ //里面跟jq的所有代码 })(jy) 

  10. HAproxy-1.6.X 安装部署

    1. 源码包下载及安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 root@iZ23tsilmb7Z:/usr/local ...