正解:主席树/莫队

解题报告:

传送门!

这题好像就是个主席树板子题的样子,,,?

毕竟,主席树的最基本的功能就是,维护一段区间内某个数字的个数

但是毕竟是刚get到主席树,然后之前做的一直是第k大,这个是维护区间内数字个数,题目类型不一样,所以还是积累一下这个题型和对应的方法QAQ

顺便也水一发题解

所以还是写下这题

首先不难想到对于[l,r]的点直接把r的树和l-1的树做差就可以得到

这样现在就相当于是得到了一棵线段树

那肯定就是维护这个区间的所有数字的出现次数(,,,我发现我这里出现了两个意义不同的区间,星趴我后面解释一下)

显然出现的次数总和sum是已知不变的,不可能存在l和r都>=sum/2(,,,哦其实存在极端情况的然而不要在意这种细节,,,差不多做法QAQ!)

所以每次就往出现次数>=sum/2的区间跑,如果跑到叶子节点了,就说明存在,如果跑着跑着发现,两个区间都不满足>=sum/2,说明GG了,就不存在

然后就做完辣!

然后说下两个区间

第一个是最前面说,"首先不难想到对于[l,r]的点直接把r的树和l-1的树做差就可以得到",这里指的是[l,r]这个询问

第二个是第三行"那肯定就是维护这个区间的所有数字的出现次数"以及之后所有的关于区间的说法,指的都是序列上的区间

代码等下放QAQ

另外说下!这题还有个!莫队做法!虽然复杂度不对!但是能过去!但是我不想打了反正莫队基本上实现都很简单,懒得写了QAQ

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define rg register
#define gc getchar()
#define rp(i,x,y) for(rg int i=x;i<=y;++i) const int N=;
int n,m,a[N],st[N],tot,nod_cnt,rt[N],r,l;
struct sgtr{int l,r,ls,rs,sz,name;}tr[N<<]; il int read()
{
rg char ch=gc;rg int x=;rg bool y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il void build(int x,int l,int r)
{
++nod_cnt;tr[x].l=l,tr[x].r=r;tr[x].name=l;
if(l==r)return;
tr[x].ls=nod_cnt+;build(tr[x].ls,l,(l+r)>>);tr[x].rs=nod_cnt+;build(tr[x].rs,((l+r)>>)+,r);return;
}
il void modify(int x,int dat)
{
++nod_cnt;tr[nod_cnt]=tr[x];++tr[nod_cnt].sz;
if(tr[nod_cnt].l==tr[nod_cnt].r)return;
int mid=(tr[nod_cnt].l+tr[nod_cnt].r)>>;
if(dat<=mid){tr[nod_cnt].ls=nod_cnt+;modify(tr[x].ls,dat);}else{tr[nod_cnt].rs=nod_cnt+;modify(tr[x].rs,dat);}
}
il int query(int nw1,int nw2,int len)
{
if(tr[nw1].l==tr[nw1].r)return tr[nw1].name;
int tmp1=-;
if((tr[tr[nw2].ls].sz-tr[tr[nw1].ls].sz)*>len)tmp1=query(tr[nw1].ls,tr[nw2].ls,len);
if(tmp1!=-)return tmp1;
if((tr[tr[nw2].rs].sz-tr[tr[nw1].rs].sz)*>len)tmp1=query(tr[nw1].rs,tr[nw2].rs,len);
return tmp1;
} int main()
{
// freopen("kc.in","r",stdin);freopen("kc.out","w",stdout);
n=read();m=read();rp(i,,n)a[i]=st[i]=read();sort(st+,st++n);tot=unique(st+,st++n)-st-;rp(i,,n)a[i]=lower_bound(st+,st++tot,a[i])-st;
rt[]=;build(,,tot);
rp(i,,n){rt[i]=nod_cnt+;modify(rt[i-],a[i]);}
rp(i,,m){l=read(),r=read();int tmp=query(rt[l-],rt[r],r-l+);if(tmp==-)printf("0\n");else printf("%d\n",st[tmp]);}
return ;
}

然后这个是主席树的做法QAQ

洛谷P3567 KUR-Couriers [POI2014] 主席树/莫队的更多相关文章

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

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

  2. 洛谷P4587 神秘数 [FJOI2016] 主席树

    正解:主席树 解题报告: 先放下传送门QAQ 首先可以先思考如果只有一组询问,怎么解决 可以这么想,最开始一个数也麻油的时候能表示的最大的数是0嘛 然后先排个序,按顺序每次新加入一个数x,设加入这个数 ...

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

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

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

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

  5. 洛谷P4559 [JSOI2018]列队(主席树)

    题面 传送门 题解 首先考虑一个贪心,我们把所有的人按\(a_i\)排个序,那么排序后的第一个人到\(k\),第二个人到\(k+1\),...,第\(i\)个人到\(k+i-1\),易证这样一定是最优 ...

  6. 洛谷P3293 [SCOI2016]美味(主席树)

    传送门 据说这题做法叫做可持久化trie树?(然而我并不会) 首先考虑一下贪心,从高位到低位枚举,如果能选1肯定比选0优 假设已经处理到了$b$的第$i$位,为1(为0的话同理就不说了) 那么只有当$ ...

  7. 洛谷$P$3293 美味 $[SCOI2016]$ 主席树

    正解:主席树 解题报告: 传送门! 挺有趣的,至少我不会$QAQ$(虽然我不会的多了去了$QAQ$ 如果没有这个所谓美味度限制可以直接线段树水过去嘛$QwQ$ 然后现在问的是个异或运算后的结果,关于异 ...

  8. 洛谷$P$3241 开店 $[HNOI2015]$ 主席树/点分治

    正解:主席树/动态点分治 解题报告: 传送门! $umm$淀粉质的话要是动态的我还不会$QAQ$,,,所以先写下主席树的题解昂$QwQ$ 题目大意是说,给定一棵树,树上每个点都有个值,然后有若干个询问 ...

  9. 洛谷 P4755 - Beautiful Pair(主席树+分治+启发式优化)

    题面传送门 wssb,我紫菜 看到这类与最大值统计有关的问题可以很自然地想到分治,考虑对 \([l,r]\) 进行分治,求出对于所有 \(l\le x\le y\le r\) 的点对 \((x,y)\ ...

随机推荐

  1. FDDI即光纤分布式数据接口

    光纤分布式数据接口它是于80年代中期发展起来一项局域网技术,它提供的高速数据通信能力要高于当时的以太网(10Mbps)和令牌网(4或16Mbps)的能力.FDDI标准由ANSI X3T9.5标准委员会 ...

  2. Visual自动添加CSS兼容前缀

    安装方法 打开vs code 的 扩展 ---> 搜索 Autoprefixer,并安装. 使用方法 打开css文件,按F1,选择 Autoprefix CSS 这条命令 没执行命令之前: 执行 ...

  3. C语言学习之路

    c语言学习 初识c语言 c语言数据类型.运算符和表达式(整数浮点数) 字符型数据/字符串 算术运算符和算术表达式(优先级,结合性等) 顺序程序设计(运算符之类内容,字符输入输出等) C/C++ 查看数 ...

  4. 更换 homebrew 国内镜像源

    Brew 是OS X 上类似apt-get以及yum的一个软件包管理器,它依托于Github……………… 所以,虽然你侥幸下载到了 brew,但你肯定是无法更新 brew 的.原因你懂.不过虽然不能更 ...

  5. SpringBoot Docker Mysql安装,Docker安装Mysql

    SpringBoot Docker Mysql安装,Docker安装Mysql ================================ ©Copyright 蕃薯耀 2018年4月8日 ht ...

  6. iOS开发-- 使用TFHpple解析html

    占坑 http://www.raywenderlich.com/14172/how-to-parse-html-on-ios

  7. git 误删分支恢复方法

    在使用Git的过程中,因为人为因素造成分支(commit)被删除,可以使用以下步骤进行恢复. 首先用以下步骤创建一个新分支,修改一些文件后删除,以便进行恢复. 1.创建分支 abc git branc ...

  8. arthas使用分享

    文章目录准备启动Demo进入arthas控制台基础命令jvm相关class/classloader相关monitor/watch/trace相关options管道后台异步任务Web Console其他 ...

  9. Installation Guide Ubuntu 16.04

    Beside the installation guide on the main page, here is a guide to install GenieACS off a freshly in ...

  10. thinkphp5---如何使用公共类

    在进行项目开发的时候,有很多的类是前后台以及其他模块都会使用的,例如验证码,上传类,密码加密的类等以及一些其他的第三方类库,如何在项目中提取这些公共的类呢? 具体方法: 例如:我在这里定义上传的类,里 ...