尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

贼猴 0930 模拟赛 T2 | 计数

贼猴 0930 模拟赛 T2 | 计数
📅 发布时间:2026/6/19 18:21:56

没有传送门。

非常有意思的一道题,都是独立想出来的。

题意

维护一个序列,支持单点修改,查询全局所有长度为 \(k\) 的区间,区间中不同数字个数的和。

序列长度 \(n\),操作次数 \(m\),满足 \(n, k, m \leq 3 \times 10 ^ 5\),序列值域是 \([1,n]\)

思路

只要求求解一个和,很明显要拆贡献。

一个方向是去按照下标拆贡献,看每个位置的值被加入到区间中和被删除时对答案产生的影响,但贡献总是跟 \(k\) 有关,这不利于查询。

换一种思路,按照值域拆贡献,考虑每一个值会对答案产生多少贡献,这样就很好地将不同的值独立开来,解决不同数字的问题。
于是最后的答案就是对于一个值 \(i\) 所有长度为 \(k\) 且包含值 \(i\) 的区间的个数的和。

但是固定一个值,求包含它的区间数量也不好求,可以考虑正难则反,去计算有多少区间是不包含 \(i\) 的,最后用总共的区间个数 \(n - k + 1\) 减一下。

我们发现,一个区间不包含 \(i\) 必定是在 \(i\) 的两个出现位置之间,形式化地,是当前区间 \([l,r]\) 满足:

\[pos_{j - 1} \lt l \le r \lt pos_j \]

其中 \(pos\) 是 \(i\) 出现位置的有序序列。

那么对于相邻的两个 \(pos\),其中包含的区间有 \(\max \left( 0, pos_{j} - pos_{j - 1} - k \right)\) 个。


先考虑不带修改的部分分:

我们将式子转变为 \(\max \left( k, pos_j - pos_{j - 1} \right) - k\)。
就拆成了查询 \(\le k\) 的 \(pos_j - pos_{j - 1}\) 的和以及个数。

不带修的情况只需要把所有的 \(pos_j - pos_{j - 1}\) 排序做后缀和,每次查询二分即可。


加上修改之后,就不能完成排序、后缀和的事情了。

先解决如何查询 \(\le k\) 的 \(pos_j - pos_{j - 1}\) 的和以及个数,同时要支持加入与删除:
平衡树是可以做到的,但是太麻烦,可以用树状数组维护一个序列,下标为 \(i\) 表示 \(pos_j - pos_{j - 1} = i\) 的 \(pos_j - pos_{j - 1}\) 之和。
每次修改就形如 \(add(i,i)\)。

记录这个的个数也类似,只需要把定义改成个数,每次修改形如 \(add(i,1)\) 即可。

那么考虑每一次单点修改 \(a_i \rightarrow v\) 造成的影响,分原来的值(\(pre\_v\))和新的值(\(cur\_v\))考虑:

  • \(pre\_v\) 中,\(i\) 与其前驱,\(i\) 与其后驱的差应当删除,而其前驱和其后驱的差应当被加入。

  • \(cur\_v\) 类似,应当删除加入后 \(i\) 的前驱、后驱之间的差删除,将 \(i\) 与其前驱,与其后驱的差考虑。

时间复杂度是 \(O(m \log n)\)。

相关新闻

  • 题解:AT_abc311_h [ABC311Ex] Many Illumination Plans
  • SuperMap iObjects .NET 11i 二次开发(十五)—— 类型转换之面转点 - 教程
  • AT_agc035_c [AGC035C] Skolem XOR Tree

最新新闻

  • 2026亲测:专业降AIGC软件选它准没错 - 降AI小能手
  • LeagueAkari:基于LCU API的英雄联盟客户端工具包实现多数据源整合架构设计
  • 2026防晒墨镜哪些品牌排名高?TOP5清单出炉 - 速递信息
  • 上海汽车音响改装选哪家?上海音乐人生,二十年赛事级连锁标杆门店 - 音乐人生汽车音响
  • 技术解析:从Tri-Plane到3D GAN,如何实现高效且一致的神经渲染
  • 通过Selenium实现网页截图来生成应用封面

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号