思路:

按权值建一棵主席树

(但是这好像不是正解 空间复杂度是不对的…….)

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 555555
int n,m,cnt,root[N],a[N],xx,yy;
struct Tree{int l,r,num;}tree[N*20];
void push_up(int pos){tree[pos].num=tree[tree[pos].l].num+tree[tree[pos].r].num;}
int build(int l,int r){
int pos=++cnt;
if(l==r){return pos;}
int mid=(l+r)>>1;
tree[pos].l=build(l,mid),tree[pos].r=build(mid+1,r);
return pos;
}
int insert(int o,int l,int r,int num){
int pos=++cnt;tree[pos]=tree[o];
if(l==r){tree[pos].num++;return pos;}
int mid=(l+r)>>1;
if(num<=mid)tree[pos].l=insert(tree[o].l,l,mid,num);
else tree[pos].r=insert(tree[o].r,mid+1,r,num);
push_up(pos);
return pos;
}
int query(int o,int v,int l,int r,int wei){
if(tree[o].num-tree[v].num<=wei)return 0;
if(l==r)return l;
int mid=(l+r)>>1;
if(tree[tree[o].l].num-tree[tree[v].l].num>wei)
return query(tree[o].l,tree[v].l,l,mid,wei);
else return query(tree[o].r,tree[v].r,mid+1,r,wei);
}
int main(){
scanf("%d%d",&n,&m);
root[0]=build(1,n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]),root[i]=insert(root[i-1],1,n,a[i]);
for(int i=1;i<=m;i++){
scanf("%d%d",&xx,&yy);
printf("%d\n",query(root[yy],root[xx-1],1,n,(yy-xx+1)/2));
}
}

BZOJ 3524主席树裸题 (雾)的更多相关文章

  1. POJ 2104 求序列里第K大 主席树裸题

    给定一个n的序列,有m个询问 每次询问求l-r 里面第k大的数字是什么 只有询问,没有修改 可以用归并树和划分树(我都没学过..囧) 我是专门冲着弄主席树来的 对主席树的建树方式有点了解了,不过这题为 ...

  2. 主席树----POJ 2104(主席树裸题)(转)

    首先来介绍一下我们需求:给你n个数,多次问你某个区间内的第k小是哪个数 主席树: 主席树的全名应该是 函数式版本的线段树.加上附带的一堆 technology.. ..总之由于原名字太长了,而且 “主 ...

  3. BZOJ 3524 - 主席树

    传送门 题目分析 标准主席树,按照位置插入每个数,对于询问l, r, 在l-1,r两树上按照线段树搜索次数大于(r - l + 1) / 2的数. code #include<bits/stdc ...

  4. poj2104 主席树裸题

    空间大小:n*lgn 复杂度:建树n*lgn  查询lgn #include <cstdio> #include <iostream> #include <algorit ...

  5. 15:Challenge 11(主席树裸题)

    总时间限制:  10000ms 单个测试点时间限制:  1000ms 内存限制:  262144kB 描述 给一个长为N的数列,有M次操作,每次操作是以下两种之一: (1)修改数列中的一个数 (2)求 ...

  6. POJ 3468 线段树裸题

    这些天一直在看线段树,因为临近期末,所以看得断断续续,弄得有些知识点没能理解得很透切,但我也知道不能钻牛角尖,所以配合着刷题来加深理解. 然后,这是线段树裸题,而且是最简单的区间增加与查询,我参考了A ...

  7. Codeforces 633C Spy Syndrome 2 | Trie树裸题

    Codeforces 633C Spy Syndrome 2 | Trie树裸题 一个由许多空格隔开的单词组成的字符串,进行了以下操作:把所有字符变成小写,把每个单词颠倒过来,然后去掉单词间的空格.已 ...

  8. BZOJ 3932: [CQOI2015]任务查询系统 (主席树板题)

    就是裸的主席树,差分之后排序插入主席树就行了. 注意主席树查询的时候叶子节点要特判,因为本身是有size的 还有要开longlong CODE #include <cctype> #inc ...

  9. 【BZOJ 1901】【Zju 2112】 Dynamic Rankings 动态K值 树状数组套主席树模板题

    达神题解传送门:http://blog.csdn.net/dad3zz/article/details/50638360 说一下我对这个模板的理解: 看到这个方法很容易不知所措,因为动态K值需要套树状 ...

随机推荐

  1. 怎样在Web项目中的service业务层获取项目根路劲

    这里我们有两个前提 1.没有使用struts2框架.没有使用servlet,无法给service层传递request对象. 2.使用了Spring框架. 那你可能问.会有这样的情况吗?答案是有的,比方 ...

  2. Boost Log 基本使用方法

    Boost Log 基本使用方法 flyfish 2014-11-5 依据boost提供的代码演示样例,学习Boost Log 的基本使用方法 前提 boost版本号boost_1_56_0 演示样例 ...

  3. python写个简单的文件上传是有多难,要么那么复杂,要么各种,,,老子来写个简单的

    def upload(url,params): ''' 上传文件到server,不适合大文件 @params url 你懂的 @params {"action":"xxx ...

  4. ThinkPHP5.0框架开发--第10章 TP5.0验证器

    ThinkPHP5.0框架开发--第10章 TP5.0验证器 第10章 TP5.0验证器 ======================================= 今日学习 1.验证器 1) 控 ...

  5. hdoj--5606--tree(并查集)

    tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submi ...

  6. weboffice7

    document.all.WebOffice1.ShowToolBar = false;

  7. php正则检测字符串由单一字符组成

    $str = 'aaa' $firstChar = substr($str , 0, 1); $pattern = "/^[$firstChar]+$/"; $ret = preg ...

  8. javascript 异或运算符实现简单的密码加密功能

    写在前面的 当我们需要在数据库中存储用户的密码时,当然是不能明文存储的. 我们就是介绍一下用^运算符来实现简单的密码加密以及解密功能 上代码 首先,回顾一下基础知识. String.fromCharc ...

  9. anaconda安装basemap

    https://blog.csdn.net/m0_37556124/article/details/80560384 basemap安装前需要先安装geos conda install geos 其次 ...

  10. cx-oracle-------------------安装

    这个东西弄完就报错.... 这个是Oracle官方的方法:https://oracle.github.io/odpi/doc/installation.html#windows 然而,你懂的,不能用啊 ...