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

二进制报警器 学习笔记

考虑以下问题:

维护一个长度为 \(n\) 的序列,并在线支持 \(q\) 次以下操作:

  • \(x\) 个位置加 \(val\)
  • 给定不超过 \(y\) 个位置,在这些位置被加了不少于 \(val\) 时输出编号;

在操作一之后暴力判断询问是否需要回答是不优的,因为会有很多次无效判断,因此高效解决此问题的关键在于怎么快速确定一个询问是否需要判断。

考虑可以用 \((v,S)\) 来表示一个询问,其中 \(v\) 是剩余询问值,\(S\) 是贡献位置集合。一个简单而关键的观察是如果不存在 \(x\in S\),满足 \(x\) 贡献了 \(\dfrac{v}{|S|}\),那么询问一定不满足,其充要性容易证明。那么记 \((v,S)\) 这个询问的闸值为 \(\dfrac{v}{|S|}\),那么在每一个位置维护一个数据结构(通常为堆),每次找到该位置上贡献值已经不少于闸值的询问,然后判断,更新闸值即可。

上述做法的时间复杂度均摊分析可以得到为 \(O(x)-O(y\log q \log V)\)。(\(O(x)-O(y)\) 表示操作一时间复杂度为 \(O(x)\),操作二时间复杂度为 \(O(y)\))

注意到上述做法的瓶颈在于每次更新闸值时都要把新闸值的询问放入数据结构,太不优秀了。考虑能否优化这一点,考虑将闸值的形式修改一下:我们称 \(x\)\(y\) 时经过了 \((x,x+y]\)。询问 \((v,S)\) 的闸值 \(h\) 为满足 \(S\) 中所有数都不经过 \(2^{h+1}\) 的倍数时,可以加的数总和大于 \(v\) 的数。把询问挂在 \((x,h)(x \in S)\) 上。那么当一个位置 \(i\) 的数经过 \(2^x\) 时,我们判断所有挂在 \((i,x)\) 上的询问是否满足即可,如果需要不需要降闸值,那么所有询问不变;否则添加新询问。

闸值在判断 \(y\) 次后一定下降,因此时间复杂度为 \(O(x+\log V)-O(y\log V)\)

http://www.jsqmd.com/news/763632/

相关文章:

  • 新手必看:TMS320F280049最小系统板DIY,从选型到电源设计的保姆级避坑指南
  • 2026 年 5 月国内外在线浊度仪十大品牌排名 - 仪表人小余
  • AI建站工具全流程指南:零基础如何从0到1搭建个人品牌网站
  • 用PyTorch手把手教你实现LoRA:从Linear到ConvLoRA的完整代码解析
  • 数学建模小白避坑指南:线性规划建模常见5大误区及Matlab的linprog函数正确打开方式
  • 为内部知识库问答系统集成Taotoken提供的多模型能力
  • 基于GPT的终端AI助手开发:从原理到工程实践
  • free-fs BOPLA VULNs Report
  • 从Matlab仿真到嵌入式C代码:雷达CFAR加速核的实战配置与参数调优指南
  • 【边缘AI场景Docker调优白皮书】:基于Raspberry Pi 5/JeVois-Bin/NVIDIA Jetson实测数据的12项关键参数配置清单
  • 音频重采样(Audio Resampling)实现指南
  • 别再一个个部署模型了!用Xinference在AutoDL上一次性搞定Embedding、Rerank和Qwen(附完整命令清单)
  • AI 英语伴学 APP的开发
  • 量子网络模拟中的张量网络技术与应用
  • 新手猫粮创业者的避坑指南与成功攻略
  • 【前端(十三)】JavaScript 数组与字符串笔记
  • Mac mini 从零开始:新建隔离用户 + 完整安装 Hermes Agent
  • 别再只会用等号了!C++ vector赋值,swap和assign到底哪个更快?
  • 程序化噪声在游戏开发中的应用:从Perlin到Shader实战
  • Barlow字体超级家族:如何用一个开源字体解决你的多平台设计统一难题
  • 效率提升:用快马ai一键生成winutil多模块工具箱代码框架
  • Golden UPF Flow实战解析:如何用一份UPF搞定RTL到门级的低功耗验证
  • LIDA:基于大语言模型的自然语言数据可视化代码生成工具
  • 5个常见游戏控制器兼容性难题:XOutput如何让旧手柄在现代游戏中重获新生
  • Obsidian BMO Chatbot:在笔记软件中集成AI助手的配置与实战指南
  • 为Alexa注入ChatGPT灵魂:智能语音助手开发实战指南
  • Windows右键菜单管理终极指南:5分钟掌握系统级菜单定制
  • C++链表学习心得
  • 别再死记硬背了!用Multisim仿真带你直观理解运放负反馈的三大魔法(增益、带宽、阻抗)
  • JESD204B同步实战:在Vivado里配置Xilinx IP核时,这几个参数千万别设错