求区间内个数大于rank的一个数

主席树求一下就好啦!

 /**************************************************************
Problem: 2223
User: rausen
Language: C++
Result: Accepted
Time:704 ms
Memory:54712 kb
****************************************************************/ #include <cstdio>
#include <algorithm> using namespace std;
const int N = 3e5 + ;
const int Cnt_chair = ; struct chair_node {
chair_node *ls, *rs;
int cnt;
} *root[N], mempool[Cnt_chair], *cnt_chair = mempool, *null; int n, mx, ans; inline int read() {
int x = ;
char ch = getchar();
while (ch < '' || '' < ch)
ch = getchar();
while ('' <= ch && ch <= '') {
x = x * + ch - '';
ch = getchar();
}
return x;
} #define mid (l + r >> 1)
void chair_insert(chair_node *p, chair_node *&q, int l, int r, int x) {
(q = ++cnt_chair) -> cnt = p -> cnt + ;
if (l == r) return;
if (x <= mid)
q -> rs = p -> rs, chair_insert(p -> ls, q -> ls, l, mid, x);
else
q -> ls = p -> ls, chair_insert(p -> rs, q -> rs, mid + , r, x);
} int chair_query(chair_node *p, chair_node *q, int l, int r, int rank) {
if (l == r) return l;
if (q -> ls -> cnt - p -> ls -> cnt > rank)
return chair_query(p -> ls, q -> ls, l, mid, rank);
if (q -> rs -> cnt - p -> rs -> cnt > rank)
return chair_query(p -> rs, q -> rs, mid + , r, rank);
return ;
}
#undef mid int main() {
int Q, i, l, r;
n = read(), mx = read();
null = cnt_chair;
null -> cnt = , null -> ls = null -> rs = null;
root[] = null;
for (i = ; i <= n; ++i)
chair_insert(root[i - ], root[i], , mx, read());
Q = read();
while (Q--) {
l = read(), r = read();
if (l > r) swap(l, r);
ans = chair_query(root[l - ], root[r], , mx, (r - l + ) >> );
if (ans == ) printf("no\n");
else printf("yes %d\n", ans);
}
return ;
}

(p.s. 数组开小了连WA两发。。。555)

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. 2018.09.30 bzoj2223: [Coci 2009]PATULJCI(主席树)

    传送门 主席树经典题目. 直接利用主席树差分的思想判断区间中数的个数是否合法然后决定左走右走就行了. 实际上跟bzoj3524是同一道题. 代码: #include<bits/stdc++.h& ...

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

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

  4. bzoj 2223 [Coci 2009]PATULJCI

    [Coci 2009]PATULJCI Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1286  Solved: 553[Submit][Status ...

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

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

  6. 【BZOJ2223/3524】[Coci 2009]PATULJCI

    Description Input   Output 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 Sample Input ...

  7. 【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 ...

  8. bzoj3524 [Poi2014]Couriers/2223 [Coci 2009]PATULJCI

    题目链接1 题目链接2 主席树模板题 两题有细节不同 #include<algorithm> #include<iostream> #include<cstdlib> ...

  9. 主席树||可持久化线段树||BZOJ 3524: [Poi2014]Couriers||BZOJ 2223: [Coci 2009]PATULJCI||Luogu P3567 [POI2014]KUR-Couriers

    题目:[POI2014]KUR-Couriers 题解: 要求出现次数大于(R-L+1)/2的数,这样的数最多只有一个.我们对序列做主席树,每个节点记录出现的次数和(sum).(这里忽略版本差值问题) ...

随机推荐

  1. 拨开障目的叶,一览CMDB庐山真面目

    人们往往用"一叶障目,不见泰山"来形容一个人被局部现象所迷惑,看不到事物发展的整体脉络,从而做出一些不是十分正确的决策.小编觉得对于运维何尝不是这样呢. 大多数企业资产配置维护的现 ...

  2. Python知识总汇

    一.python基础 python基础 python编码问题 逻辑运算 二.python数据类型 二.python数据类型 三.IO(文件处理) 三.IO(文件处理) 四.函数 函数基础 名称空间与作 ...

  3. 【Python】接口自动化测试-Fidder的使用(未完待续……)

    一.fidder一些一定需要掌握的知识. 1.工具简介 2.清屏操作(1中提到了,这里再着重说明下): 3.get和post请求参数相关: 4.会话框(Fidder左侧区域内容解析): 5.Reque ...

  4. python之sqlalchemy使用

    一.介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并 ...

  5. ppt 文字按笔画进入。

    1:在word里面写一个字(艺术字或非艺术字都可),字体格式设置为  楷体_gb23212, 没有则下载安装,http://www.cnblogs.com/liyafei/p/8747992.html ...

  6. Spark 参数配置的几种方法

    1.Spark 属性Spark应用程序的运行是通过外部参数来控制的,参数的设置正确与否,好与坏会直接影响应用程序的性能,也就影响我们整个集群的性能.参数控制有以下方式:(1)直接设置在SparkCon ...

  7. python3 捕捉代码行出错的小程序

    下面主要使用的是: try .. except .. else .. finally ...,用的是 traceback 这个第三方模块. import traceback #捕捉哪行代码报错 def ...

  8. [转]AJAX 跨源 HTTP 请求

    转自OSChina, 原文: http://www.oschina.net/translate/ajax-cross-origin-http-request 背景 跨源HTTP请求(也称跨域AJAX请 ...

  9. (20)Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)

    引用计数 引用计数是c/c++项目中一种古老的内存管理方式.当我8年前在研究一款名叫TCPMP的开源项目的时候,引用计数就已经有了. iOS SDK把这项计数封装到了NSAutoreleasePool ...

  10. Good Bye 2018 Solution

    A. New Year and the Christmas Ornament 签到. #include <bits/stdc++.h> using namespace std; int a ...