https://www.luogu.org/problem/show?pid=4168

块状数组求区间众数http://www.docin.com/p-679227660.html

这道题无修改 带修改的之后补上(之后没找到)

#include <bits/stdc++.h>
using namespace std;
const int sz=200;vector <int> pre[40010];
int big[210][210];
int ary[40010],tmp[40010],mp[40010],belong[40010],book[40010];
int n,q,len;void init(int x)
{int i,maxx,val;memset(book,0,sizeof(book));maxx=0,val=0;for(i=(x-1)*sz+1;i<=n;i++){book[mp[i]]++;if(maxx<book[mp[i]]||(maxx==book[mp[i]]&&val>mp[i])) maxx=book[mp[i]],val=mp[i];big[x][belong[i]]=val;}
}int getnum(int pl,int pr,int val)
{vector<int>::iterator y=upper_bound(pre[val].begin(),pre[val].end(),pr);vector<int>::iterator x=lower_bound(pre[val].begin(),pre[val].end(),pl);return y-x;
}int query(int pl,int pr)
{int i,maxx,val,res;val=big[belong[pl]+1][belong[pr]-1];maxx=getnum(pl,pr,val);for(i=pl;i<=pr&&belong[i]==belong[pl];i++){res=getnum(pl,pr,mp[i]);if(maxx<res||(maxx==res&&val>mp[i])) maxx=res,val=mp[i];}for(i=pr;i>=pl&&belong[i]!=belong[pl]&&belong[i]==belong[pr];i--){res=getnum(pl,pr,mp[i]);if(maxx<res||(maxx==res&&val>mp[i])) maxx=res,val=mp[i];}return val;
}int main()
{int i,l,r,ans;scanf("%d%d",&n,&q);for(i=1;i<=n;i++){scanf("%d",&ary[i]);tmp[i]=ary[i];}sort(tmp+1,tmp+n+1);len=unique(tmp+1,tmp+n+1)-tmp-1;for(i=1;i<=n;i++){mp[i]=lower_bound(tmp+1,tmp+len+1,ary[i])-tmp;pre[mp[i]].push_back(i);belong[i]=(i-1)/sz+1;}for(i=1;i<=belong[n];i++) init(i);ans=0;while(q--){scanf("%d%d",&l,&r);l=(l+ans-1)%n+1,r=(r+ans-1)%n+1;if(l>r) swap(l,r);ans=tmp[query(l,r)];printf("%d\n",ans);}return 0;
}

蒲公英 洛谷 - 4168相关推荐

  1. 洛谷4168 [Violet]蒲公英

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

  2. 蒲公英(洛谷4168分块)

    传送门 这道题其实就是询问区间众数且强制在线. 若题目是询问区间是否有过半众数,就是主席树,按值域建树,不断判断左右子树子节点数量大于(r-l+1)/2,如果一直可以到叶子节点,则return tru ...

  3. #分块#洛谷 4168 CH 4401 蒲公英

    题目 求区间众数 分析 线段树和树状数组很难做的,分块可以做,离散后预处理,大段维护,小段朴素,就做完了 代码 #include <cstdio> #include <cmath&g ...

  4. 【洛谷4168】[Violet]蒲公英

    题面 分析 求区间众数,比较好的分块题. 首先一眼发现是强制在线,以及如果要用桶来统计一个数字的数量,显然需要离散化. 发现[l,r]区间的众数只可能是[l,r]之间的块儿的众数或者是两边单独剩的部分 ...

  5. 【题解】洛谷P4168 [Violet]蒲公英 (分块)

    [题解]洛谷P4168 [Violet]蒲公英 (分块)     D e s c r i p t i o n \rm Description Description 我们把所有的蒲公英看成一个长度为 ...

  6. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  7. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  8. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  9. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

最新文章

  1. 深度学习框架Caffe2并入PyTorch,你的开发效率可能要提升不少
  2. linux下运行hadoop,Linux环境下hadoop运行平台的搭建
  3. ALV Styles in Field catalogue using OOPS
  4. prometheus 筛选不同的cpu核心
  5. opencv-python学习一--人脸检测
  6. Java学习视频教程 云析学院Java高级架构实战系列
  7. 高等数学课后答案下册同济大学第七版
  8. python用什么编译器-python用什么编译器
  9. 基于ssm+vue的综合项目 健康体检管理系统-第十章-权限控制、图形报表
  10. 基于android的音乐APP大作业和设计指导项目
  11. 软考高级 真题 2014年下半年 信息系统项目管理师 综合知识
  12. LiveGBS流媒体平台国标GB/T28181功能-国标流媒体服务平台作为上级接入海康大华华为宇视等下级平台及摄像头
  13. RT-Thread源码-__rt_ffs函数剖析
  14. kolla-ansible openstack登录 证书不可用
  15. revit插件建模助手的【快速工具箱】功能
  16. 【综合练习1】彩虹枚举(红橙黄绿青蓝紫的英文)(>Red:红 >Orange:橙 >Yellow:黄 >Green:绿 >Blue:青 >Indigo:蓝 >Purple:紫)
  17. 国际物流公司有哪些公司呢?
  18. 【mybatis】Mybatis中的一级、二级缓存
  19. java开发nao机器人,NAO机器人学习小计
  20. 职业规划及核心竞争力

热门文章

  1. substring 函数
  2. 测试英雄的软件在哪里,王者荣耀测测你是哪位英雄在哪里?活动位置介绍
  3. 缺少values和无效列类型
  4. matlab疲劳驾驶检测项目
  5. 老公的销售提成从几千到3~4万
  6. Java开发面试题目,微服务架构开发实战
  7. python向上取整_Python 向上取整的算法
  8. 什么是网页原子设计模式(Atomic Design)
  9. MFC Menu修改名称
  10. Android面试题整理,一个三非渣本的Android校招秋招之路,附超全教程文档