P8330-[ZJOI2022]众数【根号分治】
正题
题目链接:https://www.luogu.com.cn/problem/P8330
题目大意
给出一个长度为的序列,你可以选择其中一个区间将其加上任意整数,要求这个序列的众数出现次数最多。
输出最多次数和可能的众数。
,保证不所有数都相等。
解题思路
相当于找到一个区间使得区间外和区间内的众数次数和最大。
这个和出现次数挂钩,考虑根号分治。对于出现次数大于的数字,这种数字不会超过个,可以考虑对每个数字暴力做。
假设在区间外的数字是,区间内的是,那么我们区间中每个会令答案,每个会令答案。将的位置视为,的位置视为,那么最大答案就是的出现次数加最大子段和。
这个复杂度可以做到,其中表示的出现次数。
那对于每个的我们都可以解决它在外或者在内的情况。
然后考虑且的情况,先把所有的给去掉,此时注意到任何区间的众数个数都是的,那么我们预处理出表示一个最小的,满足的众数出现次数为,这样我们对于每个在外面的枚举两个的位置作为端点,然后单指针移动计算他们之间区间的众数出现次数即可。
时间复杂度:
解题思路
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤