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

于状压的线性 RMQ 算法

于状压的线性 RMQ 算法
📅 发布时间:2026/6/20 3:53:56

基于状压的线性 RMQ 算法

严格 \(\mathcal O(N)\) 预处理,\(\mathcal O(1)\) 查询。

template<class T, class Cmp = less<T>> struct RMQ {const Cmp cmp = Cmp();static constexpr unsigned B = 64;using u64 = unsigned long long;int n;vector<vector<T>> a;vector<T> pre, suf, ini;vector<u64> stk;RMQ() {}RMQ(const vector<T> &v) {init(v);}void init(const vector<T> &v) {n = v.size();pre = suf = ini = v;stk.resize(n);if (!n) {return;}const int M = (n - 1) / B + 1;const int lg = __lg(M);a.assign(lg + 1, vector<T>(M));for (int i = 0; i < M; i++) {a[0][i] = v[i * B];for (int j = 1; j < B && i * B + j < n; j++) {a[0][i] = min(a[0][i], v[i * B + j], cmp);}}for (int i = 1; i < n; i++) {if (i % B) {pre[i] = min(pre[i], pre[i - 1], cmp);}}for (int i = n - 2; i >= 0; i--) {if (i % B != B - 1) {suf[i] = min(suf[i], suf[i + 1], cmp);}}for (int j = 0; j < lg; j++) {for (int i = 0; i + (2 << j) <= M; i++) {a[j + 1][i] = min(a[j][i], a[j][i + (1 << j)], cmp);}}for (int i = 0; i < M; i++) {const int l = i * B;const int r = min(1U * n, l + B);u64 s = 0;for (int j = l; j < r; j++) {while (s && cmp(v[j], v[__lg(s) + l])) {s ^= 1ULL << __lg(s);}s |= 1ULL << (j - l);stk[j] = s;}}}T operator()(int l, int r) {if (l / B != (r - 1) / B) {T ans = min(suf[l], pre[r - 1], cmp);l = l / B + 1;r = r / B;if (l < r) {int k = __lg(r - l);ans = min({ans, a[k][l], a[k][r - (1 << k)]}, cmp);}return ans;} else {int x = B * (l / B);return ini[__builtin_ctzll(stk[r - 1] >> (l - x)) + l];}}
};

相关新闻

  • KD Tree
  • 小波矩阵树:高效静态区间第 K 大查询
  • 分数运算类

最新新闻

  • 2026芜湖漏水检测维修精选优质服务商TOP5推荐!卫生间漏水/厨房漏水/屋顶天花板漏水/阳台漏水/地下室漏水防水补漏检测维修-正规防水补漏公司优选口碑榜测评推荐 - 即刻修防水
  • Mission Planner:5个高效实用技巧让你快速掌握专业无人机飞行控制
  • 预装windows11系统的西门子IPC型号:PX-39A PRO
  • 2026年污泥处理设备靠谱厂商推荐:德州洁盛环保科技,以稳定设备助力养殖及工业污水污泥无害化处置 - 海棠依旧大
  • S12S BDM硬件握手协议:ACK脉冲原理与嵌入式调试实战
  • 前向车辆最小转弯约束下的两点间最短路径生成工具(MATLAB实现+图形可视化)

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 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 号