洛谷 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支画笔 ...
随机推荐
- Python网络爬虫(四)
关于Robots协议 Robots协议也称为爬虫协议,是网络爬虫排除标准(Robots Exclusion Protocol),用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取.因为我们如果无限 ...
- Jmeter的BeanShell中报错:调用bsh方法时出错Error invoking bsh method: eval
报错内容:ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evalu ...
- DNS A记录 CNAME NS记录等的区别
DNS域名解析 tracetrt dig A记录 将此域名绑定到固定ip C记录 将此域名绑定到另一个域名上,通常是A记录的别名 AAAA记录 用来绑定ipv6地址 https://www.ezloo ...
- 转 MYSQL_GTID详解
http://blog.itpub.net/27067062/viewspace-2141906/ 一.GTID概述 GTID是MYSQL5.6新增的特性,GTID(Global Transac ...
- vbox 挂载共享文件时可能出现的问题以及对应的解决办法
VMBox挂载共享文件时可能出现的问题以及对应的解决办法 如果出现“未能加载虚拟光盘***.iso 到虚拟电脑的错误” : 左边一栏,右键光盘,eject,再安装
- Ubuntu14.04 查看安装的jetty的版本
1.首先找到start.jar , Ubuntu14.04 在/usr/share/jetty 目录下, 2.然后运行 java -jar start.jar -- version 参考
- 四则运算 calc()
它的出现还真的蛮令人惊喜的,很适用于百分比宽度.之前我们有box-sizng,而今又多了一个它,并且,calc的实用性更高.我们可以在border.margin.pading.font-size和wi ...
- Murano简介
Project Mission The mission for this project is to provide a way to make third-party applications an ...
- [Freemarker] 在Java中简单实现对Freemarker的引用
Demo目录结构 ├─src │ ├─main │ │ ├─java │ │ │ └─demo │ │ │ └─freemarker │ │ │ ├─main │ │ │ │ Test.java │ ...
- Visual Studio 2010 vs2010 英文版 使用 已有的中文版 MSDN 帮助文档
第一步 设置Help Library Manager区域语言 打开Microsoft Visual Studio 2010开始菜单里Visual Studio Tools里的Manage Help S ...