news 2026/4/18 12:09:36

20260105 莫队总结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
20260105 莫队总结

莫队

莫队是一种高效的离线处理区间查询问题的算法,本质是一种经过优化的暴力算法,该算法基于以下核心思想:当已知区间 [l, r] 的答案时,可以以 O(k) 的时间复杂度(k 通常为 1 或 log n)计算出相邻区间 [l±1, r] 和 [l, r±1] 的答案。

算法流程

  1. 读取所有查询请求
  2. 按照特定规则对查询进行排序
  3. 依次处理每个查询,通过增量调整的方式从上一个区间移动到当前区间

示例移动路径:
[1, 3] → [1, 4] → [2, 4]

排序

采用双关键字排序:

  1. 第一关键字:左端点 l 所在的块编号
  2. 第二关键字:右端点 r 的值

时间复杂度

设块大小为 B,序列长度为 n,查询次数为 m:

  • 左端点移动次数:O(mB)
  • 右端点移动次数:O(n²/B)

当取 B = √(n²/m) 时,达到最优时间复杂度。通过合理选择块大小,可以确保整体复杂度为 O(n√m)。

代码

intcmp(qq a,qq b){//蝶形优化if(pos[a.l]^pos[b.l]){returnpos[a.l]<pos[b.l];}if(pos[a.l]&1){returna.r<b.r;}returna.r>b.r;}intmain(){sort(q+1,q+1+m,cmp);for(inti=1;i<=m;i++){while(l<q[i].l)ans-=!--t[a[l++]];while(l>q[i].l)ans+=!t[a[--l]]++;while(r<q[i].r)ans+=!t[a[++r]]++;while(r>q[i].r)ans-=!--t[a[r--]];cnt[q[i].id]=ans;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 2:08:04

Zephyr电源管理API使用详解:系统学习指南

Zephyr电源管理实战指南&#xff1a;从原理到低功耗设计的完整路径你有没有遇到过这样的场景&#xff1f;设备明明只负责每分钟采集一次温湿度&#xff0c;电池却撑不过一周。调试发现&#xff0c;MCU 大部分时间都在“空转”——看似在待命&#xff0c;实则功耗高达几毫安。问…

作者头像 李华
网站建设 2026/4/18 2:08:13

Windows右键菜单管理终极指南:ContextMenuManager完整使用教程

Windows右键菜单管理终极指南&#xff1a;ContextMenuManager完整使用教程 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 想要彻底清理杂乱的Windows右键菜单&a…

作者头像 李华
网站建设 2026/4/18 2:07:23

5分钟精通ViGEMBus:Windows虚拟手柄终极配置指南

5分钟精通ViGEMBus&#xff1a;Windows虚拟手柄终极配置指南 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 想要在Windows系统上体验专业级的游戏控制吗&#xff1f;ViGEMBus虚拟手柄驱动是您的理想选择&#xff01;这款开源驱动完…

作者头像 李华
网站建设 2026/4/18 3:50:55

纪念币预约工具:智能助手让收藏变得如此简单

纪念币预约工具&#xff1a;智能助手让收藏变得如此简单 【免费下载链接】auto_commemorative_coin_booking 项目地址: https://gitcode.com/gh_mirrors/au/auto_commemorative_coin_booking 还在为限量纪念币预约失败而烦恼吗&#xff1f;这款纪念币预约工具正是你需要…

作者头像 李华
网站建设 2026/4/17 19:00:02

为什么这个神奇工具能让你在3秒内抢到红包?

为什么这个神奇工具能让你在3秒内抢到红包&#xff1f; 【免费下载链接】WeChatLuckyMoney :money_with_wings: WeChats lucky money helper (微信抢红包插件) by Zhongyi Tong. An Android app that helps you snatch red packets in WeChat groups. 项目地址: https://git…

作者头像 李华
网站建设 2026/4/18 3:52:54

零基础学ArduPilot BLHeli:电调通信设置通俗解释

零基础也能懂&#xff1a;ArduPilot 与 BLHeli 电调通信设置全解析你有没有遇到过这种情况——无人机飞着飞着突然抖动、电机响应迟钝&#xff0c;或者想看电调温度却怎么也读不出来&#xff1f;问题很可能出在飞控和电调之间的“对话方式”上。在 ArduPilot 这类开源飞控系统中…

作者头像 李华