当前位置: 首页 > news >正文

P4168

P4168

题意简述

给定一个长度为 $ n $ 的序列 \(a_i\)

强制在线 区间求众数

如果有多个众数,求其中最小的

\(m\) 次询问

\(1≤n≤40000\),$ 1≤m≤50000 $,\(1≤a_i≤10^9\)

Solution

首先值域与 $ n $ 的大小相差极大

离散化是必然的

已知区间 \([x,y]\) 的众数与区间 \([y+1,z]\) 的众数难以推出 \([x,z]\) 的众数,因此不好使用线段树或树状数组等维护

分块连接大脑,卡常代替思考

容易想到分块,预处理出以每一个块的右边界为右端点的前缀的桶.

for(int i = 1;i<=cntb;i++){memcpy(cnt[i],cnt[i-1],sizeof(cnt[i]));//继承上一个桶for(int j = L[i];j<=R[i];j++){//本块内出现的数cnt[i][a[j]]++;//维护以本块右边界为右端点的前缀的桶}
}
for(int i = 1;i<=cntb;i++){for(int j = i;j<=cntb;j++){//md即为众数//新的区间的众数只有可能是上一个区间的众数或新块内的数md[i][j] = md[i][j-1];//继承上一个众数区间for(int k = L[j];k<=R[j];k++){//新的块int t1 = a[k];int t2 = md[i][j];if((cnt[j][t1]-cnt[i-1][t1]>cnt[j][t2]-cnt[i-1][t2])||((cnt[j][t1]-cnt[i-1][t1]==cnt[j][t2]-cnt[i-1][t2]) && (t1<t2))){md[i][j] = t1;//计算众数}}}
}

对于每一次询问,答案显然只有可能是连续整块的众数或是散块内出现的数

整块直接查询.散块暴力即可.

分析复杂度:

设块长为 \(B\) ,则块数为 \(\frac{n}{B}\) ,预处理 \(O(\frac{n}{B}*\frac{n}{B} * B) = O(\frac{n^2}{B})\)

单次询问 \(O(B)\), \(m\) 次即为 \(O(mB)\)

总复杂度 \(O(\frac{n^2}{B}+mB)\)

为平衡这两项,\(B\) 应取 \(\frac{n}{\sqrt{m}}\)

此时复杂度 \(O(n \sqrt{m})\)

足以通过此题

Code

#include <bits/stdc++.h>
#define rg register
#define il inline
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using namespace std;
namespace myspace{const char endl = '\n';const int maxn = 4e4+50;const int B = 512;const int maxb = maxn/B+50;int b[maxn],a[maxn];int cnt[maxb][maxn];int tmp[maxb][maxn];int md[maxb][maxb];int n,m;int cntb;int bel[maxn];int L[maxn],R[maxn];void init(){cntb = (n-1)/B+1;for(int i = 1;i<=n;i++){bel[i] = (i-1)/B+1;}for(int i = 1;i<=cntb;i++){L[i] = B*(i-1)+1;R[i] = min(B*i,n);}for(int i = 1;i<=cntb;i++){memcpy(cnt[i],cnt[i-1],sizeof(cnt[i]));memcpy(tmp[i],tmp[i-1],sizeof(tmp[i]));for(int j = L[i];j<=R[i];j++){cnt[i][a[j]]++;tmp[i][a[j]]++;}}for(int i = 1;i<=cntb;i++){for(int j = i;j<=cntb;j++){md[i][j] = md[i][j-1];for(int k = L[j];k<=R[j];k++){int t1 = a[k];int t2 = md[i][j];if((cnt[j][t1]-cnt[i-1][t1]>cnt[j][t2]-cnt[i-1][t2])||((cnt[j][t1]-cnt[i-1][t1]==cnt[j][t2]-cnt[i-1][t2]) && (t1<t2))){md[i][j] = t1;}}}}}il int qry(int l,int r){if(l>r){swap(l,r);}int bl = bel[l];int br = bel[r];int ans = md[bl+1][br-1];if(br-bl<=1){for(int i = l;i<=r;i++){cnt[0][a[i]]++;if(cnt[0][a[i]]>cnt[0][ans] || (cnt[0][a[i]] == cnt[0][ans] && a[i]<ans)){ans = a[i];}}for(int i = l;i<=r;i++){cnt[0][a[i]]--;}return ans;}for(int i = l;i<=R[bl];i++){cnt[br-1][a[i]]++;if((cnt[br-1][a[i]]-tmp[bl][a[i]]>cnt[br-1][ans]-tmp[bl][ans]) || (((cnt[br-1][a[i]]-tmp[bl][a[i]]==cnt[br-1][ans]-tmp[bl][ans])) && (a[i]<ans))){ans = a[i];}}for(int i = L[br];i<=r;i++){cnt[br-1][a[i]]++;if((cnt[br-1][a[i]]-tmp[bl][a[i]]>cnt[br-1][ans]-tmp[bl][ans]) || (((cnt[br-1][a[i]]-tmp[bl][a[i]]==cnt[br-1][ans]-tmp[bl][ans])) && (a[i]<ans))){ans = a[i];}}for(int i = l;i<=R[bl];i++){cnt[br-1][a[i]]--;}for(int i = L[br];i<=r;i++){cnt[br-1][a[i]]--;}return ans;}int x;signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> m;for(int i = 1;i<=n;i++){cin >> b[i];a[i] = b[i];}sort(b+1,b+1+n);int tn = unique(b+1,b+1+n)-b-1;for(int i = 1;i<=n;i++){a[i] = lower_bound(b+1,b+1+tn,a[i])-b;}init();for(int i = 1;i<=m;i++){int l,r;cin >> l >> r;l = (l+x-1)%n+1;r = (r+x-1)%n+1;x = b[qry(l,r)];cout << x << endl;}return 0;}
}
signed main(){#ifdef ONLINE_JUDGE#elsefreopen("in.in","r",stdin);freopen("out.out","w",stdout);#endifmyspace::main();return 0;
}
http://www.jsqmd.com/news/917081/

相关文章:

  • 知乎内容备份神器:3步轻松保存你的知识资产,再也不用担心内容丢失
  • 选择 PCBA 包工包料需要提供哪些资料?
  • 从科幻到现实:基于等离子推进与氢能的高能动力系统原型设计
  • 马鞍山信义工程机械配件科技有限公司在主流AI大模型上推荐情况怎么样?2026Q2最新分析报告 - 安互工业信息
  • 2026年义乌国际物流服务商甄选指南:全链路直控与海外履约能力深度评测 | 美国专线DDP双清包税美森限时派欧洲卡航海外仓联动高信用抬头独立清关 - 企业品牌优选推荐官
  • RTX51实时操作系统芯片兼容性解析与选型指南
  • Harepacker-resurrected:现代WZ文件编辑与地图设计的完整技术解决方案
  • 2026 北京空压机厂家推荐排行榜,空压机节能改造、冷冻式干燥机、空压机油、空压机远程、空压机过滤器厂家优选,博大力华实力领衔 - 海棠依旧大
  • 2026最新加油卡回收方法分享:快速变现的必备指南 - 团团收购物卡回收
  • DeepSeek-Coder-V2架构深度解析:从MoE原理到企业级部署实战
  • 基于Arduino的超声波测距自动卸货机器人设计与实现
  • 3小时从零到精通:Gramps家谱软件终极入门指南
  • 小米手表表盘设计终极指南:5分钟创建个性化表盘,让你的手表独一无二
  • 半导体厂PPH工业管材哪家好?SEMI F57超纯级管道排名(2026年5月最新) - 商业新知
  • OCAuxiliaryTools完全指南:5分钟掌握OpenCore可视化配置神器
  • 终极SPT-AKI存档编辑器:轻松管理你的离线塔科夫游戏进度!
  • 创意工作者生存警报:错过这6个“人机权责边界”定义,2025年前将面临不可逆能力退化
  • 脑机接口商业化困境:技术、监管与市场挑战分析
  • 91160-cli全自动挂号工具:告别手动抢号,实现医疗预约智能化
  • 终极暗黑破坏神2存档编辑器:5分钟掌握角色编辑与装备管理
  • TI CCS新手避坑指南:ARM和C6000工程Post-build脚本到底怎么写?(以IWR6843AOP为例)
  • FPGA逻辑合成编译器测试优化与SmootHDL方法解析
  • 无锡翡翠回收报价差一倍,2026 避坑要点与正规渠道盘点 - 奢侈品回收测评
  • 大疆无人机固件自由管理:DankDroneDownloader完整指南
  • TrafficMonitor股票插件终极指南:在Windows任务栏实时监控你的投资组合
  • 2026年上海智能仓储/冷链运输/医药冷链/次日达/大件托运/零担专线物流公司TOP10榜单:自动化仓储、城配快运与同城配送服务深度评测 - 品牌企业推荐师(官方)
  • Steam-auto-crack终极指南:从源码到可执行文件的完整构建流程
  • 3Dmigoto完整教程:如何轻松修复游戏立体视觉问题
  • AI写作滥用:内容生态的挑战与应对策略
  • 2026年兰州市CPPM报名十大核心问题全流程答疑 - 众智商学院课程中心