2724: [Violet 6]蒲公英

Time Limit: 40 Sec  Memory Limit: 512 MB
Submit: 2464  Solved: 848
[Submit][Status][Discuss]

Description

Input

修正一下

l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n + 1

Output

Sample Input

6 3
1 2 3 2 1 2
1 5
3 6
1 5

Sample Output

1
2
1

陈立杰的区间众数解题报告

这篇文章讲的非常好,我就不写题解了

看了秒懂,懂了秒过

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[50005], p[50005], bel[50005], B, sum[235][50005], zh[235][235], flag[50005];
int main(void)
{int n, m, i, j, cnt, x, y, bet, l, r, temp, ans;scanf("%d%d", &n, &m);cnt = 0;for(i=1;i<=n;i++){scanf("%d", &a[i]);p[++cnt] = a[i];}sort(p+1, p+cnt+1);cnt = unique(p+1, p+cnt+1)-(p+1);for(i=1;i<=n;i++)a[i] = lower_bound(p+1, p+cnt+1, a[i])-p;B = sqrt(n)+1;x = 1, y = 0;for(i=1;i<=n;i++){y += 1;sum[x][a[i]]++;bel[i] = x;if(y>B)y = 0, x++;}if(y==0)x--;B = x;for(i=1;i<=B;i++){for(j=1;j<=cnt;j++)sum[i][j] += sum[i-1][j];}for(i=1;i<=B;i++){bet = 0;for(j=1;j<=n;j++){if(bel[j]<i)continue;flag[a[j]]++;if(flag[a[j]]>bet || flag[a[j]]==bet && a[j]<temp)bet = flag[a[j]], temp = a[j];if(bel[j+1]!=bel[j])zh[i][bel[j]] = temp;}memset(flag, 0, sizeof(flag));}ans = 0;while(m--){scanf("%d%d", &l, &r);l = (l+ans-1)%n+1;r = (r+ans-1)%n+1;if(l>r)swap(l, r);bet = 0;if(bel[l]==bel[r] || bel[l]+1==bel[r]){for(i=l;i<=r;i++){flag[a[i]]++;if(flag[a[i]]>bet || flag[a[i]]==bet && a[i]<temp)bet = flag[a[i]], temp = a[i];}for(i=r;i>=l;i--)flag[a[i]] = 0;}else{for(i=l;bel[i]==bel[l];i++){flag[a[i]]++;if(flag[a[i]]==1)flag[a[i]] += sum[bel[r]-1][a[i]]-sum[bel[l]][a[i]];if(flag[a[i]]>bet || flag[a[i]]==bet && a[i]<temp)bet = flag[a[i]], temp = a[i];}for(i=r;bel[i]==bel[r];i--){flag[a[i]]++;if(flag[a[i]]==1)flag[a[i]] += sum[bel[r]-1][a[i]]-sum[bel[l]][a[i]];if(flag[a[i]]>bet || flag[a[i]]==bet && a[i]<temp)bet = flag[a[i]], temp = a[i];}x = zh[bel[l]+1][bel[r]-1];if(sum[bel[r]-1][x]-sum[bel[l]][x]>bet || sum[bel[r]-1][x]-sum[bel[l]][x]==bet && x<temp)temp = x;for(i=l;bel[i]==bel[l];i++)flag[a[i]] = 0;for(i=r;bel[i]==bel[r];i--)flag[a[i]] = 0;}ans = p[temp];printf("%d\n", ans);}return 0;
}
/*
17 550
1 1 1 1 2 2 4 4 3 3 4 4 5 5 5 5 4
10 10
*/

bzoj 2724: [Violet 6]蒲公英(分块预处理)相关推荐

  1. Bzoj 2724: [Violet 6]蒲公英(分块)

    2724: [Violet 6]蒲公英 Time Limit: 40 Sec Memory Limit: 512 MB Description Input 修正一下 l = (l_0 + x - 1) ...

  2. bzoj 2724[Violet 6]蒲公英

    2724: [Violet 6]蒲公英 Time Limit: 40 Sec  Memory Limit: 512 MB Submit: 2630  Solved: 920 [Submit][Stat ...

  3. BZOJ 2724: [Violet 6]蒲公英

    题目大意: 求区间众数,强制在线. 题解: 考虑分块,一段区间的众数一定在整块的众数和两边多出来的数中. 可能是众数的数有O(sqrt(n))个,然后我们考虑查询这些数在区间中出现了几次. 把原来的序 ...

  4. 【bzoj2724】[Violet 6]蒲公英 分块+STL-vector

    题目描述 输入 修正一下 l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n + 1 输出 样例输入 6 3 1 2 3 2 1 2 1 5 3 ...

  5. [Luogu P4168] [BZOJ 2724] [Violet]蒲公英

    洛谷传送门 BZOJ传送门 题目背景 亲爱的哥哥: 你在那个城市里面过得好吗? 我在家里面最近很开心呢.昨天晚上奶奶给我讲了那个叫「绝望」的大坏蛋的故事的说!它把人们的房子和田地搞坏,还有好多小朋友也 ...

  6. [BZOJ2724][Violet 6]蒲公英

    [BZOJ2724][Violet 6]蒲公英 试题描述 输入 修正一下 l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n + 1 输出 输入示 ...

  7. BZOJ 2724蒲公英 (分块) 【内有块大小证明】

    题面 luogu传送门 分析 先分块,设块大小为x(之后我们会证明块大小取何值会更优) 步骤1 把所有的数离散化,然后对每个值开一个vector pos[i],pos[i]存储数i出现的位置 我们设查 ...

  8. Luogu P4168 [Violet]蒲公英(分块)

    P4168 [Violet]蒲公英 题意 题目背景 亲爱的哥哥: 你在那个城市里面过得好吗? 我在家里面最近很开心呢.昨天晚上奶奶给我讲了那个叫「绝望」的大坏蛋的故事的说!它把人们的房子和田地搞坏,还 ...

  9. 【分块】【Violet】蒲公英

    [描述] 亲爱的哥哥: 你在那个城市里面过得好吗? 我在家里面最近很开心呢.昨天晚上奶奶给我讲了那个叫「绝望」的大坏蛋的故事的说!它把人们的房子和田地搞坏,还有好多小朋友也被它杀掉了.我觉得把那么可怕 ...

最新文章

  1. 【十大经典排序算法】java实现--希尔排序(4)
  2. 使用命令行导出 SQL Server 数据层应用程序
  3. 200多个恶意NPM程序包针对Azure 开发人员,发动供应链攻击
  4. 什么是AWT_Swing_Scroll面板,上!!!
  5. Sun JVM 内存管理、参数与调优、内存分配与回收策略、GC 日志配置使用详解
  6. OpenSSL密码库算法笔记——第1章 大整数的基本运算
  7. 中国历史37位奇女子
  8. [经验栈]C#与是德科技信号发生器(Keysight RF Signal Generators)N9310A通信操作
  9. H3C新华三笔记本FN键锁定
  10. 薅羊毛php源码,基于AutoJs实现的薅羊毛App专业版源码大分享---更新啦
  11. webmagic保存html页面,WebMagic抓取前端Ajax渲染的页面
  12. WordPress | QQ互联授权登录
  13. 干货:饿了么交易系统的重构和实战
  14. 阿里云购买云服务器流程及注意事项(新用户必看图文教程)
  15. 注册表各键值保存的内容及其对用的作用(功能)(不完善,有补充的评论指出供大家学习参考)
  16. java皮丘 博客园,又一个设计工具 Framer X Preview
  17. 微型计算机控制数字量输入输出,[工学]WX_微型计算机控制技术_第二章5.ppt
  18. 视觉检测3D相机 平面度检测
  19. LiFi比WiFi快100倍:它如何运作,实际应用靠谱吗
  20. 数据库学习笔记:事务的特性和隔离级别

热门文章

  1. 为什么都建议学java而不是python-为什么入门大数据选择Python而不是Java?
  2. 自学python能找到工作吗-学习完Python后真的能找到工作吗?老男孩Python培训班
  3. python怎么读写文件-怎么用python读取和写入TIFF文件1
  4. python编程入门教学-史上最全Python编程基础入门教程
  5. python学习手册-Python学习手册
  6. python有哪些用途-Python语言有哪些用途
  7. 电子科技大学计算机课程表,电子科技大学课表.doc
  8. 空间说说秒赞java_人生靠反省,Java靠泛型
  9. python 网页设计_使用Python制作获取网站目录的图形化程序
  10. 【python 笔记】赋值语句和基本输入输出