BZOJ2223/3524:[POI2014] Couriers(主席树)
Description
给一个长度为n的序列a。1≤a[i]≤n。
m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出这个数,否则输出0。
Input
第一行两个数n,m。
第二行n个数,a[i]。
接下来m行,每行两个数l,r,表示询问[l,r]这个区间。
Output
m行,每行对应一个答案。
Sample Input
1 1 3 2 3 4 3
1 3
1 4
3 7
1 7
6 6
Sample Output
0
3
0
4
HINT
【数据范围】
n,m≤500000
Solution
就是递归查询区间sum是否大于(r-l+1)/2,是的话就递归左右儿子,否则return
如果能一直递归到l==r就是有解,否则无解
Code
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define N (300000+100)
using namespace std;
struct node{int lson,rson,sum;}Segt[N*];
int a[N],b[N],n,m,Root[N],Segt_cnt,x,y,lim; int Build(int l,int r)
{
int node=++Segt_cnt;
if (l==r) return node;
int mid=(l+r)>>;
Segt[node].lson=Build(l,mid);
Segt[node].rson=Build(mid+,r);
return node;
} int Update(int pre,int l,int r,int x)
{
int node=++Segt_cnt;
Segt[node].sum=Segt[pre].sum+;
Segt[node].lson=Segt[pre].lson;
Segt[node].rson=Segt[pre].rson;
if (l==r) return node;
int mid=(l+r)>>;
if (x<=mid) Segt[node].lson=Update(Segt[node].lson,l,mid,x);
else Segt[node].rson=Update(Segt[node].rson,mid+,r,x);
return node;
} int Query(int u,int v,int l,int r)
{
int mid=(l+r)>>,c=Segt[v].sum-Segt[u].sum;
if (c<=(y-x+)>>) return ;
if (l==r) return b[l];
return max(Query(Segt[u].lson,Segt[v].lson,l,mid),Query(Segt[u].rson,Segt[v].rson,mid+,r));
} int main()
{
scanf("%d%d",&n,&lim);
for (int i=;i<=n;++i)
scanf("%d",&a[i]),b[i]=a[i];
sort(b+,b+n+);
int num=unique(b+,b+n+)-b-;
Root[]=Build(,num);
for (int i=;i<=n;++i)
{
int t=lower_bound(b+,b+num+,a[i])-b;
Root[i]=Update(Root[i-],,num,t);
}
scanf("%d",&m);
for (int i=;i<=m;++i)
{
scanf("%d%d",&x,&y);
int ans=Query(Root[x-],Root[y],,num);
if (ans) printf("yes %d\n",ans);
else printf("no\n");
}
}
BZOJ2223/3524:[POI2014] Couriers(主席树)的更多相关文章
- BZOJ 3524: [Poi2014]Couriers [主席树]
3524: [Poi2014]Couriers Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1892 Solved: 683[Submit][St ...
- [BZOJ2223][BZOJ3524][Poi2014]Couriers 主席树
3524: [Poi2014]Couriers Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 2436 Solved: 960[Submit][St ...
- 3524: [Poi2014]Couriers -- 主席树
3524: [Poi2014]Couriers Time Limit: 20 Sec Memory Limit: 256 MB Description 给一个长度为n的序列a.1≤a[i]≤n.m组 ...
- 【BZOJ3524/2223】[Poi2014]Couriers 主席树
[BZOJ3524][Poi2014]Couriers Description 给一个长度为n的序列a.1≤a[i]≤n.m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大 ...
- 【bzoj3524】[Poi2014]Couriers 主席树
题目描述 给一个长度为n的序列a.1≤a[i]≤n.m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0. 输入 第一行 ...
- BZOJ3524[Poi2014]Couriers——主席树
题目描述 给一个长度为n的序列a.1≤a[i]≤n.m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0. 输入 第一行 ...
- BZOJ3524: [Poi2014]Couriers(主席树)
题意 题目链接 Sol 严格众数只会出现一次,那么建出主席树,维护子树siz,直接在树上二分即可 #include<bits/stdc++.h> #define LL long long ...
- 【BZOJ2223&&3524】PATULJCI [主席树]
PATULJCI Time Limit: 10 Sec Memory Limit: 259 MB[Submit][Status][Discuss] Description Input 第一行两个整数 ...
- BZOJ 3524 [POI2014]KUR-Couriers (主席树)
题目大意:给你一个序列,求某个区间出现次数大于一半的数是什么 主席树裸题,刷刷水题提升自信= = #include <cstdio> #include <cstring> #i ...
随机推荐
- Orchard源码:热启动
概述 IIS线程池中的线程数量是有限制的.当有多个长时间请求时,可能会耗尽IIS可用线程.出现503错误.在MVC中.当遇到非CPU操作的长时间请求时,MVC提供了异步方法来解决这个问题. 例:利用a ...
- MySQL---4、语句规范
1.命名规范 (1)库名.表名.(按现在的规范类似; PromoHayaoRecord),数据库名使用小写,字段名必须使用小写字母,并采用下划线分割.关键字与函数名称全部大写.(2)库名.表名.字段名 ...
- 使用TensorFlow进行中文自然语言处理的情感分析
1 TensorFlow使用 分析流程: 1.1 使用gensim加载预训练中文分词embedding 加载预训练词向量模型:https://github.com/Embedding/Chinese ...
- 关于设置服务器为https服务器
主要是设置IIS: step1:打开Internet 信息服务(IIS)管理器——选择网站,编辑绑定 step2:添加https,如下图,这样如果不设置SSL的话就两种都可以进去网站 如果想要设置 ...
- IO流的复习笔记
IO字节流和缓冲流 IO字节流的读取和写入 读取 import java.io.FileInputStream; import java.io.FileNotFoundException; impor ...
- HDU 2041--超级楼梯(递推求解)
Description 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每 ...
- C#与.NET的区别和C#程序结构
C#语言及其特点 (1)语法简洁,不允许直接操作做内存,去掉指针操作 (2)彻底的面向对象设计,C#具有面向对象所应用的一切特性:封装.继承.多态 (3)与Web紧密结合,C#支持绝大多数的Web标准 ...
- JavaWeb学习总结(二):Http协议
一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的 ...
- easy canvas shape with react antdesign 简单的canvas图形in antd & react
//show: //code: import React from "react" import {findDOMNode} from 'react-dom' import { B ...
- MySQL mysqldump数据导出基本操作
mysqldump mysqldump命令是mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中. 选项 --all-databases, -A:导 ...