题目链接

  语文题啊……

  看题解发现是让求区间中最多的数的个数,于是果断理解了一会题解……莫队套上完事。

  sum[i]表示i这个数出现的次数,cnt[i]表示出现i次的数有几个,然后乱搞搞……就好了

  

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<cctype>
  6. #include<cmath>
  7. #define maxn 300000
  8. using namespace std;
  9.  
  10. inline long long read(){
  11. long long num=,f=;
  12. char ch=getchar();
  13. while(!isdigit(ch)){
  14. if(ch=='-') f=-;
  15. ch=getchar();
  16. }
  17. while(isdigit(ch)){
  18. num=num*+ch-'';
  19. ch=getchar();
  20. }
  21. return num*f;
  22. }
  23.  
  24. int s[maxn];
  25. int q[maxn];
  26. int d[maxn];
  27. int ans[maxn];
  28. struct Que{
  29. int x,y,id;
  30. bool operator <(const Que a)const{
  31. if(s[x]!=s[a.x]) return s[x]<s[a.x];
  32. return y<a.y;
  33. }
  34. }que[maxn];
  35.  
  36. int sum[maxn],cnt[maxn];
  37.  
  38. int main(){
  39. int n=read(),m=read();
  40. int sqt=sqrt(n);
  41. for(int i=;i<=n;++i){
  42. q[i]=d[i]=read();
  43. s[i]=(i-)/sqt+;
  44. }
  45. sort(q+,q+n+);
  46. int size=unique(q+,q+n+)-q-;
  47. for(int i=;i<=n;++i) d[i]=lower_bound(q+,q+size+,d[i])-q;
  48. for(int i=;i<=m;++i) que[i]=(Que){read(),read(),i};
  49. sort(que+,que+m+);
  50. int l=,r=,now=;cnt[]=;
  51. for(int i=;i<=m;++i){
  52. int x=que[i].x,y=que[i].y;
  53. while(r<y){
  54. r++;
  55. int &o=sum[d[r]];
  56. if(now==o) now++;
  57. cnt[o]--; o++; cnt[o]++;
  58. }
  59. while(r>y){
  60. int &o=sum[d[r]];
  61. cnt[o]--; if(now==o&&cnt[o]==) now--;
  62. o--; cnt[o]++;
  63. r--;
  64. }
  65. while(l<x){
  66. int &o=sum[d[l]];
  67. cnt[o]--; if(now==o&&cnt[o]==) now--;
  68. o--; cnt[o]++;
  69. l++;
  70. }
  71. while(l>x){
  72. l--;
  73. int &o=sum[d[l]];
  74. cnt[o]--; if(now==o) now++;
  75. o++; cnt[o]++;
  76. }
  77.  
  78. ans[que[i].id]=now;
  79. }
  80. for(int i=;i<=n;++i) printf("%d\n",-ans[i]);
  81. return ;
  82. }

【Luogu】P3709大爷的字符串题(莫队算法)的更多相关文章

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

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

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

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

  3. luogu P3709 大爷的字符串题

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

  4. 【luogu P3709 大爷的字符串题】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3709 离散化+区间众数..? #include <iostream> #include < ...

  5. luogu 3709 大爷的字符串题 构造 莫队 区间众数

    题目链接 题目描述 给你一个字符串a,每次询问一段区间的贡献 贡献定义: 每次从这个区间中随机拿出一个字符\(x\),然后把\(x\)从这个区间中删除,你要维护一个集合S 如果\(S\)为空,你\(r ...

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

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

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

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

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

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

  9. Luogu 1494 - 小Z的袜子 - [莫队算法模板题][分块]

    题目链接:https://www.luogu.org/problemnew/show/P1494 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天 ...

随机推荐

  1. 协议学习之 vamei博客系列 总结

    1. 分层: 物理层(physical layer) 所谓的物理层,是指光纤.电缆或者电磁波等真实存在的物理媒介.这些媒介可以传送物理信号,比如亮度.电压或者振幅.对于数字应用来说,我们只需要两种物理 ...

  2. python——动态类型

    1.变量,对象,引用 变量是一个系统表的元素,拥有指向对象的连接的空间: 对象是分配的一块内存: 引用是自动形成的从变量到对象的指针: 类型属于对象,而不是变量 a=3;  变量a变成对象3的一个引用 ...

  3. 重温Javascript(一)-基本概念

    工作中要用到JavaScript,一组复习笔记. 一些看法 1. 想想JavaScript目前最常用的宿主环境,浏览器或者服务端V8,都是单线程,所以不用过多的考虑并发的问题,如果是协程来实现异步的方 ...

  4. Android(java)学习笔记130:Android中操作XML数据(使用Pull解析器)

    1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...

  5. Hbase 完全分布式 高可用 集群搭建

    1.准备 Hadoop 版本:2.7.7 ZooKeeper 版本:3.4.14 Hbase 版本:2.0.5 四台主机: s0, s1, s2, s3 搭建目标如下: HMaster:s0,s1(备 ...

  6. Django ORM models操作

    title: Django ORM models操作 tags: Django --- Django ORM models操作 Django ORM基本操作 一.数据库的创建及增删改查 1 使用类创建 ...

  7. 动态代理--Cglib

    JDK 的Proxy 实现,需要代理对象实现接口: package com.utils; import java.lang.reflect.InvocationHandler; import java ...

  8. 修改Windows默认调试器

    程序崩溃时,系统会弹窗让你选择是否进行调试,可以设置系统默认调试器. 注册表位置: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVe ...

  9. iOS快速开发框架--Bee Framework

    Bee Framework是一款iOS快速开发框架,允许开发者使用Objective-C和XML/CSS来进行iPhone和iPad开发,由 Gavin Kwoe 和 QFish 开发并维护. 其早期 ...

  10. Linux curl 详解

    Linux下载工具Curl也是Linux下不错的命令行下载工具,小巧.高速,唯一的缺点是不支持多线程下载.以下是他的安装和功能. 安装 $ tar zxvf curl-7.14.0.tar.gz $ ...