传送门

主席树经典题目。

直接利用主席树差分的思想判断区间中数的个数是否合法然后决定左走右走就行了。

实际上跟bzoj3524是同一道题。

代码:

#include<bits/stdc++.h>
#define N 300005
using namespace std;
int n,m,sig,rt[N],ql,qr;
struct Tree{
	int son[N*30][2],siz[N*30],tot;
	inline void update(int&p,int las,int l,int r,int k){
		p=++tot,siz[p]=siz[las]+1,son[p][0]=son[las][0],son[p][1]=son[las][1];
		if(l==r)return;
		int mid=l+r>>1;
		if(k<=mid)update(son[p][0],son[las][0],l,mid,k);
		else update(son[p][1],son[las][1],mid+1,r,k);
	}
	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;
	}
}T;
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 main(){
	n=read(),sig=read(),T.tot=0;
	for(int i=1;i<=n;++i)T.update(rt[i],rt[i-1],1,sig,read());
	m=read();
	while(m--){
		ql=read(),qr=read();
		int tmp=T.query(rt[ql-1],rt[qr],1,sig);
		if(tmp)printf("yes %d\n",tmp);
		else puts("no");
	}
	return 0;
}

2018.09.30 bzoj2223: [Coci 2009]PATULJCI(主席树)的更多相关文章

  1. BZOJ2223[Coci 2009]PATULJCI——主席树

    题目描述 输入  先输入一个数n,然后一个数表示这n个数中最大的是多少,接下来一行n个数.然后一个数m,最后m行询问每次两个数l,r. 输出 no或者yes+这个数 样例输入 10 3 1 2 1 2 ...

  2. [bzoj3524==bzoj2223][Poi2014]Couriers/[Coci 2009]PATULJCI——主席树+权值线段树

    题目大意 给定一个大小为n,每个数的大小均在[1,c]之间的数列,你需要回答m个询问,其中第i个询问形如\((l_i, r_i)\),你需要回答是否存在一个数使得它在区间\([l_i,r_i]\)中出 ...

  3. 【bzoj2223】[Coci 2009]PATULJCI 主席树

    题目描述 样例输入 10 3 1 2 1 2 1 2 3 2 3 3 8 1 2 1 3 1 4 1 5 2 5 2 6 6 9 7 10 样例输出 no yes 1 no yes 1 no yes ...

  4. BZOJ 2223 [Coci 2009]PATULJCI | 主席树练习 (好像是个权限题啊)

    题目: 给个序列,问[l,r]区间内是否存在x>(r-l+1)>>1 题解: 好像大家都觉得这个题比较简单,没人写题解啊 先说BZOJ样例的格式应该是,第二个数是序列中数的范围(就是 ...

  5. BZOJ 2223: [Coci 2009]PATULJCI 主席树

    Code: #include<bits/stdc++.h> #define maxn 300001 #define mid ((l+r)>>1) using namespace ...

  6. BZOJ_2223_[Coci 2009]PATULJCI_主席树

    BZOJ_2223_[Coci 2009]PATULJCI_主席树 Description Input 10 3 1 2 1 2 1 2 3 2 3 3 8 1 2 1 3 1 4 1 5 2 5 2 ...

  7. BZOJ2223 [Coci 2009]PATULJCI

    求区间内个数大于rank的一个数 主席树求一下就好啦! /************************************************************** Problem: ...

  8. 【莫队算法】【权值分块】bzoj2223 [Coci 2009]PATULJCI

    不带修改主席树裸题<=>莫队+权值分块裸题. 复杂度O(m*sqrt(n)). P.S.题目描述坑爹,第二个数是权值的范围. #include<cstdio> #include ...

  9. 【BZOJ2223&&3524】PATULJCI [主席树]

    PATULJCI Time Limit: 10 Sec  Memory Limit: 259 MB[Submit][Status][Discuss] Description Input 第一行两个整数 ...

随机推荐

  1. vmware esxi6.5安装使用教程(图文安装)

    准备工作: 下载ESXI5.5镜像和client客户端. 将ISO写入到U盘或是刻录光盘然后启动安装. 一.开始安装 欢迎界面 协议界面 安装在本地 键盘的键入方式 设置登录密码 开始安装 重启 安装 ...

  2. Simple2D-21(重构)渲染部分

    以前 Simple2D 的渲染方法是先设置 Pass,然后添加顶点数据,相同 Pass 的顶点数据会合并在一起.当设置新的 Pass 时,将旧的 Pass 和对应的顶点数据添加到渲染数组中.最后在帧结 ...

  3. CAAnimation临时取消动画,永久取消动画

    //临时取消动画 [CATransaction begin]; [CATransaction setDisableActions:YES]; mMyLayer.strokeEnd = 0; [CATr ...

  4. Haskell语言学习笔记(28)Data.Map

    Map Prelude> import Data.Map as Map Prelude Map> :set -XOverloadedLists Prelude Map> Overlo ...

  5. frame标签使用

    今天在做onebyone作业的时候,为了使自己的页面更加美观,我便使用了frame框架,百度了他的用法,总结如下 frame,是网页开发必须掌握的知识.例如后台架构.局部刷新,页面分割,都是frame ...

  6. 简单AOP

    代码如下 //使用说明 //1,新加接口与类 //2,新加类并实现ICallHandler类: ExecuteHandler //3,新建特性并实现HandlerAttribute和重写其中的Crea ...

  7. 格式与布局 float 左右悬浮边框

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. Hadoop 3.0.0-alpha1几个值得关注的特性

    1.支持纠删码:意味着更灵活的存储策略,即经常使用的数据利用备份方式存储(3倍存储消耗),冷数据利用纠删码容错(1.4倍存储消耗,但会造成额外的IO及CPU消耗): 2.MapReduce任务支持本地 ...

  9. chrome 调试跨域iframe

    相关链接:https://stackoverflow.com/questions/3102819/disable-same-origin-policy-in-chrome https://stacko ...

  10. SpringCloud——Eureka服务注册和发现

    一.SpringCloud和Dubbo SpringCloud整合了一套较为完整的微服务解决方案框架,而Dubbo只是解决了微服务的几个方面的问题. content Dubbo SpringCloud ...