洛谷 3567/BZOJ 3524 Couriers
3524: [Poi2014]Couriers
Time Limit: 20 Sec Memory Limit: 256 MB
Submit: 2895 Solved: 1189
[Submit][Status][Discuss]
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
题解
挺裸的主席树吧。。。
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cctype> #define mid (l + r >> 1) inline void read(int & x)
{
x = ;
int k = ;
char c = getchar();
while (!isdigit(c))
if (c == '-') c = getchar(), k = -;
else c = getchar();
while (isdigit(c))
x = (x << ) + (x << ) + (c ^ ),
c = getchar();
x *= k;
} const int N = ; int n, m, id, cnt, x, y;
int root[N], a[N], b[N], L[N], R[N], val[N]; inline int Lsh(int x)
{
return std::lower_bound(a + , a + cnt + , x) - a;
} inline void Pushup(int u)
{
val[u] = val[L[u]] + val[R[u]];
} int Build(int u, int l, int r)
{
if (l == r)
{
L[u] = R[u] = ;
val[u] = ;
return u;
}
L[u] = Build(++id, l, mid);
R[u] = Build(++id, mid + , r);
Pushup(u);
return u;
} int Add(int u, int l, int r, int x)
{
int cur = ++id;
L[cur] = L[u],
R[cur] = R[u],
val[cur] = val[u] + ;
if (l < r)
if (x <= mid) L[cur] = Add(L[u], l, mid, x);
else R[cur] = Add(R[u], mid + , r, x);
return cur;
} int Query(int u, int v, int l, int r, int Std)
{
if (l == r) return l;
if (val[L[v]] - val[L[u]] > Std)
return Query(L[u], L[v], l, mid, Std);
if (val[R[v]] - val[R[u]] > Std)
return Query(R[u], R[v], mid + , r, Std);
return ;
} int main()
{
read(n), read(m);
for (int i = ; i <= n; ++i)
read(b[i]), a[i] = b[i];
std::sort(a + , a + n + );
cnt = std::unique(a + , a + n + ) - a - ;
root[] = Build(++id, , cnt);
for (int i = ; i <= n; ++i)
root[i] = Add(root[i - ], , cnt, Lsh(b[i]));
for (int i = ; i <= m; ++i)
read(x), read(y),
printf("%d\n", Query(root[x - ], root[y], , cnt, (val[root[y]] - val[root[x - ]] >> )));
return ;
}
洛谷 3567/BZOJ 3524 Couriers的更多相关文章
- BZOJ 3524 Couriers | 主席树
BZOJ 3524 Couriers 题意 求一个区间内出现超过区间长度的一半的数,如果没有则输出0. 题解 我可能太菜了吧--这道题愣是没想出来-- 维护权值主席树,记录每个数都出现过多少次: 查询 ...
- 洛谷 P3307: bzoj 3202: [SDOI2013] 项链
题目传送门:洛谷P3307.这题在bzoj上是权限题. 题意简述: 这题分为两个部分: ① 有一些珠子,每个珠子可以看成一个无序三元组.三元组要满足三个数都在$1$到$m$之间,并且三个数互质,两个珠 ...
- 洛谷 4106 / bzoj 3614 [HEOI2014]逻辑翻译——思路+类似FWT
题目:https://www.luogu.org/problemnew/show/P4106 https://www.lydsy.com/JudgeOnline/problem.php?id=3614 ...
- 洛谷 P3332 BZOJ 3110 [ZJOI2013]K大数查询
题目链接 洛谷 bzoj 题解 整体二分 Code #include<bits/stdc++.h> #define LL long long #define RG register usi ...
- 洛谷 P2486 BZOJ 2243 [SDOI2011]染色
题目描述 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221” ...
- 洛谷 P2827 BZOJ 4721 UOJ #264 蚯蚓
题目描述 本题中,我们将用符号表示对c向下取整,例如:. 蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓. 蛐蛐国里现在共有n只蚯蚓(n为正整数).每只 ...
- 洛谷 P2155 BZOJ 2186 codevs 2301 [SDOI2008]沙拉公主的困惑
题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的 ...
- 洛谷 P2046 BZOJ 2007 海拔(NOI2010)
题目描述 YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个 ...
- 洛谷 P1903 BZOJ 2120 清橙 A1274【模板】分块/带修改莫队(数颜色)(周奕超)
试题来源 2011中国国家集训队命题答辩 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔 ...
随机推荐
- Scala_Load csv data to hive via spark2.1_via pass parameters_HiveAllType
prepare CSV data NT,col_SMALLINT,col_BIGINT,col_INT,col_FLOAT,col_DOUBLE,col_DECIMAL,col_TIMESTAMP,c ...
- 剑指Offer——数组中只出现一次的数字(一个很帅的异或解法)
题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 看题目脑子里就出现做法了: 遍历,用个HashMap来记录出现的次数,然后再遍历HashMap返回 ...
- postgis 赋予postgresql空间数据库的能力
安装: Windows:postgresql的bin目录下:运行stackbuilder,一步一步按照提示来就行了 Ubuntu: apt-get install postgresql-9.3-pos ...
- Spring Cloud(2):搭建Eureka
Eureka Server的搭建: 使用IDEA工具 File->New Project->Spring Initializr->next Next Next->Next创建即 ...
- instancetype和id的区别,objective-c
instancetype clang 3.5 提供的关键字, 表示:某方法返回未知类型的OC对象 都知道id任意类型关键字,为什么还会出现一个新的关键字? 返回关联类型 1.类方法中,alloc ...
- iOS 基础笔试题
参考:https://www.jianshu.com/p/1d3496bc5bda 1.#import 跟#include.@class有什么区别?#import<> 跟 #import& ...
- Js/Jquery获取input file的文件名
html代码: <input type="file" name="file" id="file" class="in ...
- 如何使用cPanel管理域名和数据库
cPanel是一个基于web的基于web的控制面板,它简化了许多常见的系统管理任务,如网站创建.数据库部署和管理等.本指南向您展示了如何使用cPanel用户帐户管理域和数据库.所有这些指令都与位于端口 ...
- JavaScript_HTML DEMO_1_概念
HTML DOM - 文档对象模型 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). 1. 通过可编程的对象模型,JavaScript获得了足够的能力来创 ...
- LeetCode 4Sum 4个数之和
题意:这是继2sum和3sum之后的4sum,同理,也是找到所有4个元素序列,满足他们之和为target.以vector<vector<int>>来返回,也就是二维的,列长为4 ...