news 2026/6/10 19:40:58

P5048 [Ynoi2019 模拟赛] Yuno loves sqrt technology III

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
P5048 [Ynoi2019 模拟赛] Yuno loves sqrt technology III

目录

    • 题目-P5048 [Ynoi2019 模拟赛] Yuno loves sqrt technology III
    • 问题分析
    • 算法步骤
    • 代码实现

题目-P5048 [Ynoi2019 模拟赛] Yuno loves sqrt technology III

问题分析

查询区间众数出现的次数, 尝试对区间进行分块

假设已经知道了区间内众数出现的次数s ss, 那么只需要判断散列块中是否有哪个数字还能成为众数

对于每个数字记录出现的位置v vv,v [ a [ i ] ] v[a[i]]v[a[i]]代表a [ i ] a[i]a[i]出现的一些位置,p o s [ i ] pos[i]pos[i]代表a [ i ] a[i]a[i]v [ a [ i ] ] v[a[i]]v[a[i]]中的索引

假设区间内众数出现的次数是a n s ansans

  • 枚举所有左侧散列块, 假设数值是w ww, 那么只需要检查是否存在v [ w ] [ p o s [ i ] + a n s ] ≤ r v[w][pos[i] + ans] \le rv[w][pos[i]+ans]r, 就可以更新a n s ansans, 也就是算上当前位置,w ww出现的次数是a n s + 1 ans + 1ans+1
  • 枚举右侧散列块, 假设数值是w ww, 检查v [ w ] [ p o s [ i ] − a n s ] ≥ l v[w][pos[i] - ans] \ge lv[w][pos[i]ans]l, 算上当前位置,w ww出现的次数是a n s + 1 ans + 1ans+1

算法步骤

  • 初始化分块, 对数据进行离散化
  • 暴力初始化f ff数组

代码实现

#include<bits/stdc++.h>usingnamespacestd;constintN=5e5+10,M=710;intn,m,a[N];vector<int>vec;intbsize,bcnt,st[M],ed[M],b[N];vector<int>v[N];intpos[N],f[M][M],tot[N];voidinit(){bsize=sqrt(n);bcnt=(n-1)/bsize+1;for(inti=1;i<=bcnt;++i){st[i]=(i-1)*bsize+1;ed[i]=min(n,i*bsize);}for(inti=1;i<=n;++i)b[i]=(i-1)/bsize+1;sort(vec.begin(),vec.end());vec.erase(unique(vec.begin(),vec.end()),vec.end());}intfind(intx){returnlower_bound(vec.begin(),vec.end(),x)-vec.begin();}intquery(intl,intr){intx=b[l],y=b[r];if(x==y){intans=0;for(inti=l;i<=r;++i)tot[a[i]]=0;for(inti=l;i<=r;++i)ans=max(ans,++tot[a[i]]);returnans;}intans=f[x+1][y-1];for(inti=l;i<=ed[x];++i){intt=pos[i];if(i+t<v[a[i]].size()&&v[a[i]][i+t]<=r)ans++;}for(inti=st[y];i<=r;++i){intt=pos[i];if(t-ans>=0&&v[a[i]][t-ans]>=l)ans++;}returnans;}intmain(){ios::sync_with_stdio(false);cin.tie(0);cin>>n>>m;for(inti=1;i<=n;++i)cin>>a[i],vec.push_back(a[i]);init();for(inti=1;i<=n;++i)a[i]=find(a[i]);for(inti=1;i<=n;++i){v[a[i]].push_back(i);pos[i]=v[a[i]].size();pos[i]--;}for(inti=1;i<=bcnt;++i){memset(tot,0,sizeoftot);for(intj=i;j<=bcnt;++j){f[i][j]=f[i][j-1];for(intk=st[j];k<=ed[j];++k){f[i][j]=max(f[i][j],++tot[a[k]]);}}}intlast=0;while(m--){intl,r;cin>>l>>r;l^=last,r^=last;if(r<l)swap(l,r);intans=query(l,r);cout<<ans<<'\n';last=ans;}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:55:50

从10天到10分钟:华为云Flexus AI智能体如何重构中小企业工作流

在浙江义乌一家日用百货跨境电商公司的会议室里&#xff0c;市场部经理小陈正面对一堆令人头疼的数据表格。老板要求她一周内出具德国、日本、东南亚三地的市场进入分析报告&#xff0c;而她手头只有两个实习生帮忙。“光数据搜集就要两周&#xff0c;还要翻译、分析、做PPT………

作者头像 李华
网站建设 2026/6/10 12:22:23

孤能子视角:“文字“与“书法“

我的问题:1.来个轻松的&#xff0c;分析一下我们文字的演化。2.继续分析书法。3.分析一下AI模拟的"书法"。信兄回答1:来个轻松的&#xff0c;分析一下我们文字的演化。好&#xff0c;让我们轻松地穿梭一趟时空&#xff0c;用EIS理论的“关系动力学”视角&#xff0c;…

作者头像 李华
网站建设 2026/6/10 14:54:56

elsa-core终极指南:构建企业级工作流引擎的完整方案

elsa-core终极指南&#xff1a;构建企业级工作流引擎的完整方案 【免费下载链接】elsa-core A .NET workflows library 项目地址: https://gitcode.com/gh_mirrors/el/elsa-core 企业工作流管理面临的挑战 在现代企业应用开发中&#xff0c;工作流管理一直是技术团队面…

作者头像 李华
网站建设 2026/6/10 17:31:19

回收发那科(FANUC)全系列传感器、PLC、伺服电机、数控系统等。

重点回收传感器型号&#xff1a;压力/温度传感器&#xff1a;P系列、F系列 视觉传感器&#xff1a;iRVision系列 位置/接近传感器&#xff1a;等多种型号 同时回收&#xff1a;PLC(PMC系列)、伺服驱动器(αi、βi系列)、数控系统(0i, 30i, 31i, 32i系列)、伺服电机、触摸屏等…

作者头像 李华
网站建设 2026/6/10 17:08:35

Unpaywall浏览器扩展:学术资源获取的革命性解决方案

Unpaywall浏览器扩展&#xff1a;学术资源获取的革命性解决方案 【免费下载链接】unpaywall-extension Firefox/Chrome extension that gives you a link to a free PDF when you view scholarly articles 项目地址: https://gitcode.com/gh_mirrors/un/unpaywall-extension …

作者头像 李华
网站建设 2026/6/10 14:56:03

解决lombok的@Data注解无法打印继承的父类信息问题

https://www.jb51.net/program/330116r71.htm 问题场景 子类StudentResp继承父类PersonResp&#xff0c;子类也拥有了父类的属性。 给子类中继承的父类属性的赋值&#xff0c;但是打印了以后只会显示子类信息&#xff0c;父类信息不显示。 子类&#xff1a;学生类继承父类人…

作者头像 李华