题目传送门

不用管它随机什么的,就用贪心的思想去想,

会发现这道题的实质是:求查询区间众数出现次数。

莫队即可解决。

注意字符集1e9,要离散化处理。

 #include <bits/stdc++.h>

 using namespace std;

 #define re register
#define rep(i, a, b) for (re int i = a; i <= b; ++i)
#define repd(i, a, b) for (re int i = a; i >= b; --i)
#define maxx(a, b) a = max(a, b);
#define minn(a, b) a = min(a, b);
#define LL long long
#define INF (1 << 30) inline int read() {
int w = , f = ; char c = getchar();
while (!isdigit(c)) f = c == '-' ? - : f, c = getchar();
while (isdigit(c)) w = (w << ) + (w << ) + (c ^ ''), c = getchar();
return w * f;
} const int maxn = 2e5 + ; struct Query {
int l, r, id, pos;
} q[maxn];
bool cmp(Query a, Query b) { return a.pos < b.pos || a.pos == b.pos && a.r < b.r; } struct Value {
int v, id;
} v[maxn];
bool cmpv(Value a, Value b) { return a.v < b.v; } int a[maxn], b[maxn], l[maxn], cnt[maxn], n, m, size; int main() {
n = read(), m = read();
size = sqrt(n);
rep(i, , n) v[i].v = read(), v[i].id = i;
sort(v+, v+n+, cmpv);
a[v[].id] = ;
rep(i, , n) a[v[i].id] = a[v[i-].id] + (v[i].v == v[i-].v ? : ); rep(i, , m) q[i].l = read(), q[i].r = read(), q[i].id = i, q[i].pos = (q[i].l + size - ) / size;
sort(q+, q+m+, cmp);
int pl = , pr = , ans = ; l[] = maxn;
rep(i, , m) {
while (pl < q[i].l) l[cnt[a[pl]]]--, l[cnt[a[pl]]-]++, cnt[a[pl++]]--;
while (pl > q[i].l) cnt[a[--pl]]++, l[cnt[a[pl]]]++, l[cnt[a[pl]]-]--, maxx(ans, cnt[a[pl]]);
while (pr < q[i].r) cnt[a[++pr]]++, l[cnt[a[pr]]]++, l[cnt[a[pr]]-]--, maxx(ans, cnt[a[pr]]);
while (pr > q[i].r) l[cnt[a[pr]]]--, l[cnt[a[pr]]-]++, cnt[a[pr--]]--;
while (!l[ans]) ans--;
b[q[i].id] = ans;
}
rep(i, , m) printf("%d\n", -b[i]);
return ;
}

[洛谷P3709]大爷的字符串题的更多相关文章

  1. 洛谷 P3709 大爷的字符串题

    https://www.luogu.org/problem/show?pid=3709 题目背景 在那遥远的西南有一所学校 /*被和谐部分*/ 然后去参加该省省选虐场 然后某蒟蒻不会做,所以也出了一个 ...

  2. 洛谷P3709 大爷的字符串题(莫队)

    题目背景 在那遥远的西南有一所学校 /*被和谐部分*/ 然后去参加该省省选虐场 然后某蒟蒻不会做,所以也出了一个字符串题: 题目描述 给你一个字符串a,每次询问一段区间的贡献 贡献定义: 每次从这个区 ...

  3. 【题解】洛谷P3709大爷的字符串题

    最近想要练习一下莫队(实在是掌握的太不熟练了啊.)这题一开始看到有点懵(题面杀),后来发现是要求众数的个数.乍一看好像很难的样子. 但仔细分析一下:首先往序列当中加入一个数,这个是很简单的,只需要维护 ...

  4. 洛谷P3709 大爷的字符串

    题意:多次求区间众数的出现次数. 解: 这题居然可以莫队...... 首先开个桶.然后还要开个数组,cnt[i]表示出现i次的数有多少个. 然后就可以O(1)修改了. #include <cst ...

  5. P3709 大爷的字符串题 (莫队)

    题目 P3709 大爷的字符串题 题意:求\([l,r]\)中众数的个数. 解析 维护两个数组: \(cnt[x]\),数\(x\)出现的次数. \(sum[x]\),出现次数为\(x\)的数的个数. ...

  6. P3709 大爷的字符串题(莫队+结论)

    题目 P3709 大爷的字符串题 做法 有一个显然的结论:一段区间里最小答案为众数的个数 用莫队来离线求众数 \(tmp_i\)表示出现\(i\)次的数的个数,\(num_i\)表示\(i\)出现的次 ...

  7. luogu P3709 大爷的字符串题

    二次联通门 : luogu P3709 大爷的字符串题 /* luogu P3709 大爷的字符串题 莫队 看了半天题目 + 题解 才弄懂了要求什么... 维护两个数组 一个记录数字i出现了几次 一个 ...

  8. P3709 大爷的字符串题(50分)

    题目背景 在那遥远的西南有一所学校 /*被和谐部分*/ 然后去参加该省省选虐场 然后某蒟蒻不会做,所以也出了一个字符串题: 题目描述 给你一个字符串a,每次询问一段区间的贡献 贡献定义: 每次从这个区 ...

  9. P3709 大爷的字符串题

    题意 询问区间众数出现的次数 思路 唯有水题快人心 离散化+莫队 莫队一定要先加后减,有事会出错的 莫队维护区间众数: 维护两个数组,一个数组记录权值为x的出现次数,一个记录出现次数为x的数的个数 a ...

随机推荐

  1. cocos meta 文件git显示

    是如果提交meta文件后,并且大家是用git来做版本控制的话,CCC可能会在打开时自动修改meta(即使你是刚从最新版本拉下来的),这个问题的原因是git在windows和linux不同系统间换行符不 ...

  2. JavaScript之深入对象(一)

    在之前的<JavaScript对象基础>中,我们大概了解了对象的创建和使用,知道对象可以使用构造函数和字面量方式创建.那么今天,我们就一起来深入了解一下JavaScript中的构造函数以及 ...

  3. Scala函数式编程(三) scala集合和函数

    前情提要: scala函数式编程(二) scala基础语法介绍 scala函数式编程(二) scala基础语法介绍 前面已经稍微介绍了scala的常用语法以及面向对象的一些简要知识,这次是补充上一章的 ...

  4. SpringBoot起飞系列-日志使用(四)

    一.SpringBoot中的日志组件 日志是一个系统中不可缺少的组件.在项目中,我们常用的日志组件有JUL.JCL.Jboss-logging.logback.log4j.log4j2.slf4j.. ...

  5. python9

    v> 软件测试 广州博才科技开发有限公司 迅捷PDF编辑器 3.5 集合 学习目标: 1. 能够说出如何创建集合 2. 能够说出字典和集合的区别 3. 能够说出如何向集合中添加元素 4. 能够说 ...

  6. Win系统下使用命令链接MySQL数据库

    方法一: 1:打开[开始]>[运行]输入[cmd]单击[确定]后出现CMD命令黑色窗口,这就是我们说的CMD命令行 2:默认进入C盘,于是我们可以进入E盘,点击回车.因为我的数据库是存放在E盘的 ...

  7. unzip 命令指定解压路径

    在使用unzip进行文件包解压,可以用来解压zip/jar/war包类型,有时解压时需要解压到指定路径时可以使用参数 -d 来指定,例如: unzip services-bak.jar -d ./we ...

  8. AVR单片机教程——EasyElectronics Library v1.1手册

    索引: bit.h delay.h pin.h wave.h pwm.h led.h rgbw.h button.h switch.h 主要更新: 用枚举类型替换了大部分宏定义: 添加了wave.h. ...

  9. SpringBoot进阶教程(六十二)整合Kafka

    在上一篇文章<Linux安装Kafka>中,已经介绍了如何在Linux安装Kafka,以及Kafka的启动/关闭和创建发话题并产生消息和消费消息.这篇文章就介绍介绍SpringBoot整合 ...

  10. php获取文件的文件名(误区)

    文件路径:$path = '/home/files/1234.jpg'; php获取文件名,大家应该是轻车熟路了,写个小函数,分分钟 <?php //获取文件名 function get_fil ...