求区间内个数大于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. load_1m

  2. 数据去重优化 MemoryError 内存不足

    from ProjectUtil.usingModuleTOMODIFY import getNow export_q_f, q_l, start_ = '/mnt/mongoexport/super ...

  3. How many ways??---hdu2157(矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2157   题意:有一个有向图,含有n个节点,m条边,Q个询问,每个询问有 s,t,p,求 s 到 t ...

  4. Python开发【数据结构】:算法(一)

    算法基础 1.什么是算法? 算法(Algorithm):一个计算过程,解决问题的方法 2.复习:递归 递归的两个特点: 调用自身 结束条件 两个重要递归函数的对比: # 由大到小 def func3( ...

  5. Web开发:URL编码与解码(转)

    原文:http://www.cnblogs.com/greatverve/archive/2011/12/12/URL-Encoding-Decoding.html 通常如果一样东西需要编码,说明这样 ...

  6. android的selector选择器

    1. drawable/actionbar_compat_item.xml 2.drawable/actionbar_compat_item_pressed.xml 3.drawable/action ...

  7. windows 系统无法启动windows event log 服务

    windows 系统无法启动windows event log 服务 关键词:无法启动系统事件日志 尝试解决步骤 [1]权限:把如图中logsfile文件等都给local service [2]把C: ...

  8. JAVA优化技巧分享 让游戏更加的流畅

    我的世界怎么样可以玩的更加流畅呢?怎么对游戏进行优化呢?相信很多小伙伴都很想知道吧,今天小编为大家带来的是我的世界游戏优化技巧,喜欢的小伙伴不要错 ... 在很多时候如果电脑配置过低的话,玩游戏并不流 ...

  9. Flume+Morphlines实现数据的实时ETL

    转载:http://mp.weixin.qq.com/s/xCSdkQo1XMQwU91lch29Uw Apache Flume介绍: Apache Flume是一个Apache的开源项目,是一个分布 ...

  10. python基础之if语句

    python之if语句 通用格式 if <test1>: <do something> elif: <do something> else: <do some ...