当前位置: 首页 > 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.zskr.cn/news/1428399.html

相关文章:

  • 2026年国内高性价比环氧树脂涂料生产厂家实力排行 廊坊安宏环保科技有限公司实力突出 - 奔跑123
  • TIA Portal仿真避坑指南:从‘变量地址I改M’到‘监视模式灯不亮’的完整排错流程
  • 从科幻到现实:基于等离子推进与氢能的高能动力系统原型设计
  • Harepacker-resurrected:现代WZ文件编辑与地图设计的完整技术解决方案
  • 马鞍山信义工程机械配件科技有限公司在主流AI大模型上推荐情况怎么样?2026Q2最新分析报告 - 安互工业信息
  • 3小时从零到精通:Gramps家谱软件终极入门指南
  • 终极SPT-AKI存档编辑器:轻松管理你的离线塔科夫游戏进度!
  • 半导体厂PPH工业管材哪家好?SEMI F57超纯级管道排名(2026年5月最新) - 商业新知
  • OCAuxiliaryTools完全指南:5分钟掌握OpenCore可视化配置神器
  • 大疆无人机固件自由管理:DankDroneDownloader完整指南
  • TI CCS新手避坑指南:ARM和C6000工程Post-build脚本到底怎么写?(以IWR6843AOP为例)
  • 3Dmigoto完整教程:如何轻松修复游戏立体视觉问题
  • AI写作滥用:内容生态的挑战与应对策略
  • vJoy虚拟手柄终极指南:5步将键盘鼠标变专业游戏控制器
  • VS2022里那个被遗忘的‘类视图’窗口,到底能帮你省多少事?(附快速打开技巧)
  • AI纪念品供应链断裂预警:全球仅存3家合规CMOS图像传感器供应商,2024Q3备货策略紧急通告
  • 保姆级教程:用微PE工具箱给硬盘GPT分区后,BIOS里这个UEFI设置千万别忘
  • 索尼相机隐藏功能解锁:从基础设置到高级定制的完整指南
  • Windows锁屏界面也想用Wallpaper Engine壁纸?手把手教你从scene.pkg文件提取高清静态图
  • 2026年佛山铰链滑轨五金厂家深度横评:阻尼铰链、隐藏滑轨、收纳拉篮一站式选购避坑指南 - 企业名录优选推荐
  • 【架构设计】系统架构设计原则:从需求到落地的完整指南
  • 【Gemini产品需求文档实战指南】:20年资深PM亲授7大避坑法则与5步高效撰写法
  • 对比分析:HRNet-W18与其他主流图像分类模型的优劣对比
  • 2026 晋城装修公司推荐|主流家装企业实力与服务一览 - 商业新知
  • 2026最新测评:16款降AI率工具横评,这款神器让论文秒过检测!
  • Gemini API调用成本暴增?3大隐藏计费陷阱及2024年最优用量配置方案
  • usbipd-win突破性指南:高效实现Windows USB设备跨平台共享实战
  • Hap QuickTime GPU加速视频编解码器:免费解锁硬件加速的终极指南
  • 遂宁黄金回收靠谱榜单5.29本地实测测评与变现避坑攻略 - 资讯纵览
  • 2026北京怀柔区股权变更:专业机构推荐(附TOP3测评) - 小柏云