2724: [Violet 6]蒲公英
Time Limit: 40 Sec Memory Limit: 512 MB
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
HINT
修正下:
n <= 40000, m <= 50000
Source
Vani原创

/*
分块.
把数据分为√n块.
答案无非有两种:
1是查询区间中某一块的区间众数.
2是剩余的不足一块的数.
我们先对一个区间的所有块暴力扫.
令f[i][j]表示第i块到第j块的众数.
这样枚举是n√n的.
(貌似发现了新大陆 GCD,max啥的都可以这样搞?
然后一开始是没想明白的(由于本人比较弱
但是考虑一下确实是这样的.
用反证法可以证明.
*/
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
#include<map>
#define MAXN 50001
using namespace std;
int n,m=200,q,lastans,belong[MAXN],a[MAXN],tot,id[MAXN],f[510][510],cnt[MAXN];
vector<int>g[MAXN];
map<int,int>ma;
int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();return x*f;
}
void slove(int x)
{memset(cnt,0,sizeof cnt);int max1=0,ans=0;for(int i=(x-1)*m+1;i<=n;i++){cnt[a[i]]++;if(cnt[a[i]]>max1||(cnt[a[i]]==max1&&id[a[i]]<id[ans]))max1=cnt[a[i]],ans=a[i];f[x][belong[i]]=ans;}return ;
}
int query(int x,int y,int k)
{return upper_bound(g[k].begin(),g[k].end(),y)-lower_bound(g[k].begin(),g[k].end(),x);
}
int slovequery(int x,int y)
{int ans=f[belong[x]+1][belong[y]-1];int max1=query(x,y,ans);for(int i=x;i<=min(y,belong[x]*m);i++){int t=query(x,y,a[i]);if(t>max1||(t==max1&&id[a[i]]<id[ans]))max1=t,ans=a[i];}if(belong[x]!=belong[y]){for(int i=(belong[y]-1)*m+1;i<=y;i++){int t=query(x,y,a[i]);if(t>max1||(t==max1&&id[a[i]]<id[ans]))max1=t,ans=a[i];}}return ans;
}
int main()
{int x,y;n=read(),q=read();for(int i=1;i<=n;i++){a[i]=read();if(!ma[a[i]]) ma[a[i]]=++tot,id[tot]=a[i];a[i]=ma[a[i]];g[a[i]].push_back(i);}for(int i=1;i<=n;i++) belong[i]=(i-1)/m+1;for(int i=1;i<=belong[n];i++) slove(i);//起点.while(q--){x=read(),y=read();x=(x+lastans-1)%n+1,y=(y+lastans-1)%n+1;if(x>y) swap(x,y);lastans=id[slovequery(x,y)];printf("%d\n",lastans);}return 0;
}

转载于:https://www.cnblogs.com/nancheng58/p/10068059.html

Bzoj 2724: [Violet 6]蒲公英(分块)相关推荐

  1. bzoj 2724: [Violet 6]蒲公英(分块预处理)

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

  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. [Luogu P4168] [BZOJ 2724] [Violet]蒲公英

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

  5. 【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 ...

  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. 【分块】【Violet】蒲公英

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

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

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

最新文章

  1. 数组扩容 java_java 实现数组扩容与缩容案例
  2. android 获得屏幕的大小
  3. ES6:Set和Map
  4. GenseeSDK DocView(OpenGL)引起的TextView显示黑块
  5. 2017.3.3 拔河比赛 思考记录
  6. 改进我个人知识管理手段
  7. 递归统计项目中的非空白代码行数
  8. 读取和修改caffemodel文件
  9. Web安全深度剖析-笔记
  10. 财务主管的ERP实施之路
  11. HTML加载图片跨域
  12. python获取当前时间戳_Python获取时间戳代码实例
  13. 独孤求败-小滴云架构大课十八式
  14. 单片机 DAC0832数模转换实验
  15. cesium加载OSM在线地图
  16. 微软推出游戏服务器,成为云玩家 微软将推出“Project xCloud”云游戏服务
  17. 阿里云-印刷文字识别-营业执照识别
  18. 线性表(链式存储结构)C语言
  19. 超调量怎么计算公式_超调量如何计算?
  20. 高德地图开发:Marker 与 Polyline

热门文章

  1. E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
  2. mongodb 文档服务器,mongodb服务器
  3. python中单行注释_Python中的单行、多行、中文注释方法
  4. java 委托_面试官:java双亲委派机制及作用
  5. html非零正实数正则表达式,正数|非负数|正整数正小数和0 |金额正则表达式
  6. mysql里的max怎么用_MySQL中的max()函数使用教程
  7. datetime对应的java类型_MySQL数据类型笔记
  8. Qt把已有工程添加到其他工程中作为子工程或新创建子工程
  9. 单自由度系统的振动的幅频特性曲线及相频特性曲线及matlab分析,实验四 线性系统的频域分析...
  10. css两列等高,css 多列等高